תכנות תרגול 2 שבוע : 6.11.05. שבוע שעבר כתבו תוכנית המגדירה...

Preview:

Citation preview

22 תכנות תרגולתכנות תרגול

::שבועשבוע

6.11.056.11.05

שבוע שעברשבוע שעבר

מאתחלת מאתחלת שלושה משתניםשלושה משתניםכתבו תוכנית המגדירה כתבו תוכנית המגדירה

שלהם את שלהם את המכפלההמכפלה ומדפיסה את ומדפיסה את 33 ו ו 22 11אותם ל אותם ל

שלהם. שלהם.הסכוםהסכום שלהם ואת שלהם ואת ההפרשההפרש

פתרוןפתרון#include <stdio.h>#include <stdio.h>void main()void main(){{

int x,y,z;int x,y,z;x=1;x=1;y=2;y=2;z=3;z=3;printf ("x*y*z=%d\n",x*y*z);printf ("x*y*z=%d\n",x*y*z);printf ("x+y+z=%d\n",x+y+z);printf ("x+y+z=%d\n",x+y+z);printf ("x-y-z=%d\n",x-y-z);printf ("x-y-z=%d\n",x-y-z);

}}

שפונקצית ההדפסהשפונקצית ההדפסהנשים לב מקבלת גם ביטוי מתמטי מחשבת

אותו ומדפיסה את ערכו

קליטת ערכים למשתנים קליטת ערכים למשתנים מהמשתמשמהמשתמש#include <stdio.h>#include <stdio.h>

void main()void main()

{{

int num, num1;int num, num1;

printf("Enter two positive numbers\printf("Enter two positive numbers\n");n");

scanf("%d%d", &num, &num1);scanf("%d%d", &num, &num1);

}}

הוראה למשתמש

קליטת הערכים

פונקצית הקליטהפונקצית הקליטה

scanf("%d%d", &num, &num1);scanf("%d%d", &num, &num1);

שם הפונקציה

אופי הקלט

)מופיע בין גרשיים(

הקלט יכנס

למשתניםnum

num1ו- ? & מה פשר הסימן

&& &&

תרגילתרגיל

כתבו תוכנית הקולטת שני מספרים מהמשתמש כתבו תוכנית הקולטת שני מספרים מהמשתמש

ומדפיסה את ההפרש שלהם ואת החלוקה ומדפיסה את ההפרש שלהם ואת החלוקה שלהם.שלהם.

פתרון תרגילפתרון תרגיל#include <stdio.h>#include <stdio.h>void main()void main(){{

int num, num1, s,q;int num, num1, s,q;printf("Enter two positive numbers\n");printf("Enter two positive numbers\n");scanf("%d%d", &num, &num1);scanf("%d%d", &num, &num1);s = num - num1;s = num - num1;printf("subtraction of %d from %d is %d\n", num1, printf("subtraction of %d from %d is %d\n", num1, num, s);num, s);q = num / num1;q = num / num1;printf("quotient of %d and %d is %d\n", num, num1, printf("quotient of %d and %d is %d\n", num, num1, q);q);

}}

הוראה למשתמשקליטת הערכים

תוכנית לפירוק מספר דו ספרתיתוכנית לפירוק מספר דו ספרתי

#include <stdio.h>#include <stdio.h>void main()void main(){{

int sum, num;int sum, num;sum = 0;sum = 0;printf("Enter 2-digits number\n");printf("Enter 2-digits number\n");scanf("%d", &num);scanf("%d", &num);sum = num % 10;sum = num % 10;num = num / 10;num = num / 10;sum = sum + num;sum = sum + num;printf("The digits sum is %d\n", sum);printf("The digits sum is %d\n", sum);

}}

ספרה ראשונה

ספרה שניה

11תרגיל תרגיל

כתוב תוכנית המקבלת מספר תלת ספרתי ומדפיסה כתוב תוכנית המקבלת מספר תלת ספרתי ומדפיסה את את

סכום ספרותיו. סכום ספרותיו.

#include <stdio.h>#include <stdio.h>void main()void main(){{

int sum, num;int sum, num;sum = 0;sum = 0;printf("Enter 3-digits number\n");printf("Enter 3-digits number\n");scanf("%d", &num);scanf("%d", &num);sum = num % 10;sum = num % 10;num = num / 10;num = num / 10;sum = sum + num % 10;sum = sum + num % 10;num = num / 10;num = num / 10;sum = sum + num % 10;sum = sum + num % 10;printf("The digits sum is %d\n", sum);printf("The digits sum is %d\n", sum);

}}

ספרה ראשונה

ספרה שנייה

11פתרון תרגיל פתרון תרגיל

ספרה שלישית

סוגי משתנים אפשרייםסוגי משתנים אפשריים

שםשם טווחטווח הדפסההדפסה BytesBytes

floatfloat 3.4E +/- 383.4E +/- 38 %f%f 44

doubledouble 1.7E +/- 3081.7E +/- 308 %lf%lf 88

intint תלוי מערכתתלוי מערכת %d%d **

charchar 127127- עד - עד 128128מ מ %c%c 11

int i1,i2,ir;int i1,i2,ir;float f1,f2,fr;float f1,f2,fr;i1=5,f2=2;i1=5,f2=2;f1 = (float)i1;f1 = (float)i1;i2 = (int)f2; i2 = (int)f2; ir = i1 / i2 ;ir = i1 / i2 ;fr = f1 / f2 ;fr = f1 / f2 ;printf("1. ir = %d, fr = %f\n",ir,fr);printf("1. ir = %d, fr = %f\n",ir,fr);ir = i1 / f2 ;ir = i1 / f2 ;fr = i1 / f2 ;fr = i1 / f2 ;printf("2. ir = %d, fr = %f\n",ir,fr);printf("2. ir = %d, fr = %f\n",ir,fr);ir = i1 / i2 ;ir = i1 / i2 ;fr = i1 / i2 ;fr = i1 / i2 ;printf("3. ir = %d, fr = %f\n",ir,fr);printf("3. ir = %d, fr = %f\n",ir,fr);

הגדרת משתנים

אתחול משתנים

1חילוק – דוגמא

הדפסה

2חילוק – דוגמא

הדפסה

3חילוק – דוגמא

הדפסה

1. ir = 2 fr =2.500000

2. ir = 2 fr =2.500000

3. ir = 2 fr =2.000000

:הסבה, בלי זה נקבל את האזהרהconversion from 'int' to 'float', possible loss of data

22תרגיל תרגיל

יארדים יארדים385385 מיילים ו מיילים ו2626ריצת מרתון היא ריצת מרתון היא

לתרגם מיילים ויארדים לקילומטרים ומטרים נשתמש לתרגם מיילים ויארדים לקילומטרים ומטרים נשתמש

בנוסחה הבאה:בנוסחה הבאה:

Kilometers = 1.609 (miles + Kilometers = 1.609 (miles + yards/1760)yards/1760)

כתוב תוכנית שמחשבת את אורך ריצת המרתוןכתוב תוכנית שמחשבת את אורך ריצת המרתון

בקילומטרים.בקילומטרים.

22פתרון שגוי לתרגיל פתרון שגוי לתרגיל

#include <stdio.h>#include <stdio.h>int main(void)int main(void){{ int miles, yards;int miles, yards; double kilometers;double kilometers; miles = 26;miles = 26; yards = 385;yards = 385; kilometers = 1.609 * (miles + yards / kilometers = 1.609 * (miles + yards /

1760);1760);}}

22פתרון נכון לתרגיל פתרון נכון לתרגיל

#include <stdio.h>#include <stdio.h>

int main(void)int main(void)

{{

int miles, yards;int miles, yards;

double kilometers;double kilometers;

miles = 26;miles = 26;

yards = 385;yards = 385;

kilometers = 1.609 * (miles + yards / kilometers = 1.609 * (miles + yards / 1760.0);1760.0);

}}

משפטי תנאימשפטי תנאי

if if ((conditioncondition)){{

}}

elseelse{{

}}

במקרה של קיום התנאי

במקרה של אי-קיום התנאי

00התנאי הוא אמת אם ערכו שונה מ התנאי הוא אמת אם ערכו שונה מ

כתיבת תנאיםכתיבת תנאים

(A == B)(A == B)

(A != B)(A != B)

(A < B)(A < B)

(A > B)(A > B)

(A <= B)(A <= B)

(A >= B)(A >= B)

(A > B || A < C)(A > B || A < C)

(A < B && B < C)(A < B && B < C)

33תרגיל תרגיל

BB ו ו AAכתוב תוכנית הקולטת שני מספרים כתוב תוכנית הקולטת שני מספרים ומדפיסהומדפיסה

BB====AAאת היחס בניהם. אם הם שווים יודפס את היחס בניהם. אם הם שווים יודפס AAאם אם

. . BB>>AA אחרת יודפס אחרת יודפס BB<<AA יודפס יודפס BBגדול מ גדול מ

- פתרון - פתרון33תרגיל תרגיל

void main()void main(){{

int A, B;int A, B;printf("Enter two Numbers\n");printf("Enter two Numbers\n");scanf("%d%d", &A, &B);scanf("%d%d", &A, &B);if (A == B)if (A == B)

printf(“Aprintf(“A====BB\\n");n");elseelse

if (A > B)if (A > B)printf(“A>Bprintf(“A>B\\n");n");

elseelseprintf(“A<Bprintf(“A<B\\n");n");

}}

whilewhile לולאות לולאות

while (condition)while (condition)

{{

loop bodyloop body

}}

במקרה של קיום התנאימתבצע גוף הלולאה

ברגע שהתנאי לא מתקיים נצא ברגע שהתנאי לא מתקיים נצא !מהלולאהמהלולאה

דוגמא ללולאה – חישוב עצרתדוגמא ללולאה – חישוב עצרת#include <stdio.h>#include <stdio.h>int main()int main(){{

int i,n,fact = 1;int i,n,fact = 1;printf("Enter a number\n");printf("Enter a number\n");scanf("%d", &n);scanf("%d", &n);i=1;i=1;while (i<=n)while (i<=n){{

fact *= i;fact *= i;i++;i++;

}}printf("the factorial is %d\n", fact);printf("the factorial is %d\n", fact);return 0;return 0;

}}

הגדרת משתנים

קליטת ערכים

אתחול מונה

הלולאה עצמה

הדפסת התוצאה

44תרגיל תרגיל

קלוט שני מספרים וחשב את החזקה שלהם קלוט שני מספרים וחשב את החזקה שלהם

באמצעות פעולות כפל בלבד. באמצעות פעולות כפל בלבד.

44פתרון תרגיל פתרון תרגיל #include <stdio.h>#include <stdio.h>int main()int main(){{

int a, b, i, power;int a, b, i, power;i = 1;i = 1;power = 1;power = 1;printf("Enter 2 numbers\n");printf("Enter 2 numbers\n");scanf("%d%d", &a, &b);scanf("%d%d", &a, &b);while(i <= b)while(i <= b){

power = power * a;power = power * a;i++;i++;

}}printf("%d power %d is %d\n",a,b, power);printf("%d power %d is %d\n",a,b, power);return 0;return 0;

}}

תנאי הקיום של הלולאה

גוף הלולאה כאשר הוא מכיל יותר מהוראה אחת

{ } נפתח קטע קוד

לולאה שמחשבת סכום סדרת מספריםלולאה שמחשבת סכום סדרת מספרים#include <stdio.h>#include <stdio.h>void main()void main(){{

int num, i=1, counter, sum=0;int num, i=1, counter, sum=0;printf("Enter the expected number of integers\n");printf("Enter the expected number of integers\n");scanf("%d", &counter);scanf("%d", &counter);while( i <= counter)while( i <= counter){{

printf("Enter a number\n");printf("Enter a number\n");scanf("%d", &num);scanf("%d", &num);sum += num;sum += num;i++;i++;

}}printf("The numbers sum is %d\n", sum);printf("The numbers sum is %d\n", sum);

}}

הגדרת משתנים ואתחולם

קליטת מספר הפעמים לביצוע

תנאי קיום הלולאה

:גוף הלולאה

קליטת המספר•סיכום המספר•קידום המונה•

הדפסת הסכום