Presentation is loading. Please wait.

Presentation is loading. Please wait.

מבוא למדעי המחשב תרגול 6 - מערכים שעת קבלה : יום שני 11:00-12:00 דוא " ל :

Similar presentations


Presentation on theme: "מבוא למדעי המחשב תרגול 6 - מערכים שעת קבלה : יום שני 11:00-12:00 דוא " ל :"— Presentation transcript:

1 מבוא למדעי המחשב תרגול 6 - מערכים שעת קבלה : יום שני 11:00-12:00 דוא " ל : keren@eli-wigs.comkeren@eli-wigs.com

2 מערכים מערך הוא טיפוס נתונים המכיל מספר אברים מאותו סוג. מיקום האיבר במערך נקרא אינדקס. למערך בעל n איברים יש n אינדקסים מ -0 עד n-1. כלומר, האיבר הראשון יושב במקום 0, האיבר השני במקום 1,..., האיבר האחרון יושב במקום ה n-1.

3 הצהרה על מערך type name[size]; למשל, הצהרה על מערך בשם grades שמכיל 20 אברים מטיפוס שלם : int grades[20]; גודל המערך חייב להיות מוגדר מראש. לכן לא ניתן להצהיר על מערך באופן הבא : int x; int array[x]; התייחסות לאיבר במערך : name[index] למשל, ניתן את הערך 100 לאיבר העשירי במערך : grades[9]=100;

4 אתחול המערך בהצהרה על המערך ניתן לאתחל אותו. למשל : int a[5]={1,3,8,4,-2}; אם נאתחל מערך באופן הבא : int b[5]={1,2} אז כל שאר האברים ( השלישי עד החמשי ) יקבלו את הערך 0. בזמן ההצהרה על המערך, ניתן לאתחל את כל אבריו להיות 0. למשל : int array[10]={0}; על מנת לתת ערכים לאברי המערך לאחר ההצהרה נשתמש בלולאה. 2-4831 01342

5 העברת מערך חד מימדי לפונקציה דוגמה : void function(int x[]) אם נרצה להעביר לפונקציה את גודל המערך, נעביר אותו כמשתנה מועבר. העברת המערך היא העברה לפי התייחסות (call by reference) ולכן הפונקציה מקבלת את כתובת תחילת המערך. הבעיה : הפונקציה יכולה לשנות את ערכי המערך. אם לא נרצה לשנות את הערכים נעביר את המערך כקבוע : void function(const int x[]) טיפוס אברי המערך שם המערך סוגריים ריקים ללא ציון הגודל

6 כתוב תכנית שקולטת ערכים למערך מגודל 10 של מספרים שלמים, מוסיפה לכל איבר את סכום הערכים של אברי המערך, ומדפיסה את המערך החדש. #include #define N 10 int kelet(int a[]) } int i,sum=0; printf ("\n enter %d numbers",N); for (i=0;i<N;i++) { scanf ("%d",&a[i]); sum+=a[i]; { return (sum); { void add(int b[],int sum) } int i; for (i=0;i<N;i++) } b[i]+=sum; printf ("\n array[%d]=%d",i,b[i]); { { void main() } int array[N]; add(array,kelet(array)); {

7 תרגילים: 1) כתבו תוכנית שמצהירה על מערך מטיפוס שלם של 9 איברים, ותבצע : א. תציב את המספר 0 בכל האברים. ב. תציב את המספר 1 באברים בעלי אינדקס אי זוגי. ג. תציב את המספר 2 באברים בעלי אינדקס זוגי. ד. תוסיף את המספר 3 לאברים שהאינדקס שלהם מתחלק ב -3. ה. תדפיס את המערך. 2) כתבו תכנית שקולטת מערך בגודל 10 של תווים, ותו נוסף. התכנית תדפיס כמה פעמים מופיע התו הנוסף במערך, ובאיזה מקום במערך הוא מופיע בפעם הראשונה. 3) כתבו תכנית שקולטת 7 תווים למערך ובונה מערך חדש מאותו גודל שאיבריו מוזזים מקום אחד ימינה, והאיבר האחרון במערך המקורי יהפוך להיות ראשון בחדש. התכנית תדפיס את שני המערכים. לדוגמה : חדש מקורי 4) כתבו תכנית שקולטת ערכים שלמים אי שליליים לשני מערכים a ו -b בגודל 10 ובונה מערך חדש c שהוא מערך החיתוך של a ו b-.( כלומר הוא מכיל את האיברים בעלי ערכים משותפים של a ו -b). ניתן להניח שבכל מערך אין איבר פעמיים. elpmaxe lpmaxee

8 תרגיל 1 #include #define N 9 void main() } int i,a[N]={0}; for (i=0;i<N;i++) } if (i%2) a[i]=1; else a[i]=2; if (!(i%3)) a[i]+=3; { for (i=0;i<N;i++) printf ("\n a[%d]=%d",i,a[i]); {

9 תרגיל 2 #include #define N 10 void kelet(char a[]) } int i; printf ("\n enter %d chars",N); for (i=0;i<N;i++) } flushall(); scanf("%c",&a[i]); { int find_index(const char a[],char tav) } int i; for (i=0;i<N;i++) if (a[i]==tav) return(i); return(-1); { void main() } char array[N],c; int i,count=0,index; kelet(array); printf ("\n enter another char"); flushall(); scanf ("%c",&c); for (i=0;i<N;i++) if (array[i]==c) count++; printf ("\n %c appears %d times at array",c,count); index=find_index(array,c); if (index!=-1) printf ("\n %c appears at %d place",c,index+1); {

10 תרגיל 3 #include #define N 7 void kelet(char a[]) } int i; printf ("\n enter %d chars",N); for (i=0;i<N;i++) } flushall(); scanf ("%c",&a[i]); { pelet(const char a[]) } int i; printf ("\n"); for (i=0;i<N;i++) printf ("%c",a[i]); { void main() } char arr[N],new[N]; int i; kelet(arr); new[0]=arr[N-1]; for (i=1;i<N;i++) new[i]=arr[i-1]; pelet(arr); pelet(new); {

11 תרגיל 4 #include #define N 10 void kelet(int array[]) } int i; printf ("\n enter %d numbers",N); for (i=0;i<N;i++) scanf ("%d",&array[i]); { pelet(const int arr[]) } int i; printf ("\n"); for (i=0;i<N;i++) if (arr[i]>0) printf ("%d",arr[i]); { void main() } int a[N],b[N],c[N]={0}; int i,j; kelet(a); kelet(b); for (i=0;i<N;i++) for (j=0;j<N;j++) if (a[i]==b[j]) c[i]=a[i]; pelet(c); {


Download ppt "מבוא למדעי המחשב תרגול 6 - מערכים שעת קבלה : יום שני 11:00-12:00 דוא " ל :"

Similar presentations


Ads by Google