23
ללללל ללללל ללללל ללללל8 8 לללל לללל: : 12.4.05 12.4.05

תכנות תרגול 8

  • Upload
    uzuri

  • View
    61

  • Download
    0

Embed Size (px)

DESCRIPTION

תכנות תרגול 8. שבוע: 12.4.05. שבוע שעבר. רקורסיות. תרגיל : כתוב תוכנית הקולטת רצף כלשהו של תווים עד ללחיצה על אנטר ומדפיסה אותו. שבוע שעבר. רקורסיות. void wrt_it(); int main() { printf("Input a line\n"); wrt_it(); printf("\n"); return 0; } void wrt_it() { char ch; - PowerPoint PPT Presentation

Citation preview

Page 1: תכנות תרגול 8

88 תכנות תרגולתכנות תרגול

::שבועשבוע

12.4.0512.4.05

Page 2: תכנות תרגול 8

רקורסיות רקורסיות : תרגיל

כתוב תוכנית הקולטת רצף כלשהו של תווים עד ללחיצה על אנטר ומדפיסה אותו

Page 3: תכנות תרגול 8

רקורסיות רקורסיות

פתרוןvoid wrt_it();int main(){

printf("Input a line\n");wrt_it();printf("\n");return 0;

}void wrt_it(){

char ch;scanf("%c", &ch);printf("%c", ch);if (ch != '\n')

wrt_it();}

Page 4: תכנות תרגול 8

רקורסיות רקורסיות :תרגיל המשך

הפעם הדפס את הקלט מהסוף להתחלה

Page 5: תכנות תרגול 8

רקורסיות רקורסיות

פתרוןvoid wrt_it();int main(){

printf("Input a line\n");wrt_it();printf("\n");return 0;

}void wrt_it(){

char ch;scanf("%c", &ch);if (ch != '\n')

wrt_it();printf(“%c”,ch);

}

Page 6: תכנות תרגול 8

מערכיםמערכים

עד היום התוכניות שלנו לא ידעו לשמור כמות עד היום התוכניות שלנו לא ידעו לשמור כמות •גדולה של מידע ללא הגדרת כמות גדולה של גדולה של מידע ללא הגדרת כמות גדולה של

משתנים. משתנים.

מספרים מספרים 100100אתגר: כתוב תוכנית שקולטת אתגר: כתוב תוכנית שקולטת •שלמים ומדפיסה אותם מהאחרון שנקלט שלמים ומדפיסה אותם מהאחרון שנקלט

לראשון. לראשון. 100100 9999 , ... , , ... , 55 44 33 22 11קלט: קלט: 11 22 33 44 55 , ... , , ... , 9999 100100פלט: פלט:

Page 7: תכנות תרגול 8

פתרון )בלי מערכים(פתרון )בלי מערכים(

void main()void main()

{{

int a1,a2,a3,…,a100; int a1,a2,a3,…,a100;

scanf(“%d %d %d ,…”,a1,a2,a3,…);scanf(“%d %d %d ,…”,a1,a2,a3,…);

printf(“%d %d %d ,…”,a100,a99,a98,…);printf(“%d %d %d ,…”,a100,a99,a98,…);

}}

!!! אל תנסו בבית

Page 8: תכנות תרגול 8

מערכיםמערכים

int a;int a;

a=5;a=5;

int a[10];int a[10];

a[2] = 5;a[2] = 5;

5a

a[0]

a[1]

a[2]

a[9]

5

משתנה בודד

מערך

גישה למשתנה

השלישי במערך

Page 9: תכנות תרגול 8

void main()void main()

{{

int i=0;int i=0;

int a[100];int a[100];

for (i=0;i<100;i++)for (i=0;i<100;i++)

scanf (“%d”,&a[i]);scanf (“%d”,&a[i]);

for (i=99;i>=0;i--)for (i=99;i>=0;i--)

printf (“%d”,a[i]);printf (“%d”,a[i]);

}}

קלט

פלט

Page 10: תכנות תרגול 8

תרגילתרגיל איברים איברים 1010כתוב תוכנית הקולטת כתוב תוכנית הקולטת

לתוך מערך ומדפיסה תחילה את כל האיברים לתוך מערך ומדפיסה תחילה את כל האיברים

הזוגיים ואחר כך את כל האיברים האי זוגייםהזוגיים ואחר כך את כל האיברים האי זוגייםEnter numbers12345678910Even:2 4 6 8 10Odd:1 3 5 7 9

Page 11: תכנות תרגול 8

#include <stdio.h>#include <stdio.h>#define SIZE 10#define SIZE 10

void main()void main(){{

int i,arr[SIZE];int i,arr[SIZE];printf("Enter numbers\n");printf("Enter numbers\n");for (i=0;i<SIZE;i++)for (i=0;i<SIZE;i++)

scanf("%d",&arr[i]);scanf("%d",&arr[i]);printf("Even:\n");printf("Even:\n");for (i=0;i<SIZE;i++)for (i=0;i<SIZE;i++)

if (arr[i] % 2 == 0)if (arr[i] % 2 == 0)printf("%d ",arr[i]);printf("%d ",arr[i]);

printf("\nOdd:\n");printf("\nOdd:\n");for (i=0;i<SIZE;i++)for (i=0;i<SIZE;i++)

if (arr[i] % 2 != 0)if (arr[i] % 2 != 0)printf("%d ",arr[i]);printf("%d ",arr[i]);

printf("\n");printf("\n");}}

קלט

פלט

Page 12: תכנות תרגול 8

מערכים - אתחולמערכים - אתחול

int a[10]int a[10] = {1,2,3}; = {1,2,3};

int a[10]int a[10] = {0}; = {0};

a[0]

a[1]

a[2]

a[9]

1

2

3

0

a[0]

a[1]

a[2]

a[9]

0

0

0

0

Page 13: תכנות תרגול 8

מערכיםמערכים

פעמיים פעמיים 60006000נכתוב תוכנית שזורקת קובייה נכתוב תוכנית שזורקת קובייה

ונספור כמה פעמיים יצא כל מספר.ונספור כמה פעמיים יצא כל מספר.

Page 14: תכנות תרגול 8

#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>#define SIZE 7#define SIZE 7int main()int main(){{ int num, face, roll, frequency[ SIZE ] = { 0 }; int num, face, roll, frequency[ SIZE ] = { 0 }; scanf("%d",&num);scanf("%d",&num); srand( num );srand( num ); for ( roll = 1; roll <= 6000; roll++ ) {for ( roll = 1; roll <= 6000; roll++ ) { face = rand() % 6 + 1;face = rand() % 6 + 1; ++frequency[ face ]; ++frequency[ face ]; }} printf( "%s%17s\n", "Face", "Frequency" );printf( "%s%17s\n", "Face", "Frequency" ); for ( face = 1; face <= SIZE - 1; face++ )for ( face = 1; face <= SIZE - 1; face++ ) printf( "%4d%17d\n", face, printf( "%4d%17d\n", face,

frequency[ face ] );frequency[ face ] ); return 0;return 0;}}

Page 15: תכנות תרגול 8

הבית האדום

2כתובת : רחוב קוקוריקו

הבית הירוק

4כתובת : רחוב קוקוריקו

הבית הצהוב

1כתובת : רחוב קוקוריקו

הבית הורוד

3כתובת : רחוב קוקוריקו

2?”הבית האדום“מה הכתובת של

?2מי גר בבית מספר

רמי

יוסי

שמעון

אבנר

רמי

רמי?”בית האדום“מי גר ב

Page 16: תכנות תרגול 8

2000כתובת :

a 2000?מה הכתובת של2000מה נמצא בתא ?

a

80

3

7

5

a?5מה נמצא ב

5

b

cd

1000כתובת :

3000כתובת : 4000כתובת :

Page 17: תכנות תרגול 8

מצביעיםמצביעים

לכל משתנה שמוגדר בתוכנית יש כתובת לכל משתנה שמוגדר בתוכנית יש כתובת •

הכתובת שלו היא מיקומו בזכרוןהכתובת שלו היא מיקומו בזכרון•

למשללמשל

. . bytesbytes 44 אזי צורכים אזי צורכים intintכאשר משכנים מספר מסוג כאשר משכנים מספר מסוג

int a; a5000

Page 18: תכנות תרגול 8

מצביעיםמצביעים

int a;

int b;

a = 5;

b = 7;

a5000

b5004

5

7

Page 19: תכנות תרגול 8

מצביעיםמצביעים

int a, b;

int *p1;

int *p2;

a = 5;

b = 7;

p1 = &a;

p2 = &b;

a5000

b5004

5

7

p17026

p27030

5000

5004

Page 20: תכנות תרגול 8

מצביעיםמצביעים

int a, b;int *p1;int *p2;a = 5;b = 7;p1 = &a;p2 = &b;

a5000

b5004

5

7

p17026

p27030

5000

5004

*p1 = 2;*p2 = *p1;

Page 21: תכנות תרגול 8

מצביעיםמצביעים

int a, b;int *p1;int *p2;a = 5;b = 7;p1 = &a;p2 = &b;

a5000

b5004

2

2

p17026

p27030

5000

5004

*p1 = 2;*p2 = *p1;

Page 22: תכנות תרגול 8

תרגילתרגיל

אתחל אותם לערכים b ו aהגדר שני משתנים כלשהם.

לאחר מכן הגדר שני משתנים להחזקת הכתובות שלהםהדפס את הכתובות שלהם ואת הערכים שנמצאים

בכתובות האלו.

. p%להדפסת מצביע נשתמש בפורמט

Page 23: תכנות תרגול 8

#include <stdio.h>int main)({ int a=10,b=2;

int *p1,*p2;p1 = &a;p2 = &b;printf)“%p %p \n”,p1,p2(;printf)“%d %d \n”,*p1,*p2(;return 0;

}