Professional Documents
Culture Documents
פרק 7
מבני נתונים – מערכים Arrays
מהי פונקציה?
קטע תוכנית שיש לו טיפוס ,שם ,משתנים ,היכול לקבל נתונים,
לבצע פעולות חישוב והשוואה ולהחזיר תוצאה.
הגדרת פונקציות:
טיפוס ושם הפונקציה ,סוג הערך המוחזר ,הערכים שמועברים.
)double square(double num
{
;return num*num
}
קריאה לפונקציה עם הערך המוחזר ממנה:
;)sum=square(mis
>#include <stdio.h
הפונקציה מוכרזת מיד
;)(void get_digit
לאחר הגדרת הספריות
)(int main
} התוכנית הראשית קוראת לפונקציה לביצוע:
;)(get_digit
;return 0
{
הגדרה: •
אוסף סדור של משתנים מאותו סוג בכתובות רציפות בזיכרון. •
?שאלות
מערך:
oמשתנה המגדיר "קבוצה" של משתנים מאותו טיפוס
( int, char, float, doubleאו כל טיפוס אחר)
oהגדרת המערך מקצה רצף של משתנים בזיכרון.
9 . . . 8 . . 4 . 5
]arr[0 ]arr[9
בעת הגדרת המערך יש לציין את טיפוס המשתנים ואת מספר o
איבריו ע"י מספר קבוע.
למשל כך נגדיר מערך של )SIZE( 10משתנים מטיפוס :int o
;]int arr[SIZE
SCE-Chapter-7-Arrays Shayke Bilu PhD
גישה סודרת לתאי המערך
18
#include <stdio.h>
#define SIZE 10 מספרים ומדפיסה אותם בצורות שונות10 התוכנית קולטת
int main()
{
int i,numbers[SIZE]; int משתנים מטיפוס10 מגדירים מערך של
printf(“Enter the 10 integers:\n”);
for (i=0; i<SIZE; i++)
scanf(“%d”, &numbers[i]); 9 עד תא0 מתא,קלט לתאי המערך
for (i=0; i<SIZE; i+=2)
printf(“%6d”, numbers[i]); הדפסת האיברים בתאים הזוגיים
for (i=1; i<SIZE; i+=2)
printf(“%6d”, numbers[i]); הדפסת האיברים בתאים האי הזוגיים
}
SCE-Chapter-7-Arrays Shayke Bilu PhD
גישה ישירה לתאים במערך
19
?שאלות
#include <stdio.h>
#include <math.h>
#define SIZE 10
void main()
}
int i;
float input[SIZE],shoresh[SIZE],hezka[SIZE];
printf("Enter the 10 floats:\n");
for(i=0; i< SIZE; i++)
{
printf("Enter number to place %d:\n",i+1);
scanf("%f", &input[i]);
}
SCE-Chapter-7-Arrays Shayke Bilu PhD
1 פתרון תרגול כיתה מספר
32
for(i=0; i< SIZE; i++)
{
printf(“sqrt in place %d=%.2f\n",i+1,
sqrt(input[i]));
shoresh[i] = sqrt(input[i]);
printf("power in place %d=%.2f\n\n“,i+1,
pow(input[i],2));
hezka[i] = pow(input[i],2);
}
for(i=0; i< SIZE; i++)
printf("number=%.2f,sqrt=%.2f,power=%.2f\n“
,input[i],shoresh[i],hezka[i]);
{
SCE-Chapter-7-Arrays Shayke Bilu PhD
תרגילי כיתה
33
?שאלות
כותרת הפונקציה:
;)] [int calc_sum(int array
#include <stdio.h>
#define SIZE 10 פונקציית האתחול
void init_array(int arr[], int size, int value)
{
int i;
for(i=0; i<size; i++)
arr[i]=value;
}
void main()
{ התאים5 הקריאה לפונקציה תאתחל את
int arr[SIZE], i; .4 לערךarr הראשונים במערך
init_array(arr,5,4);
for(i=0; i<10; i++) !!! המערך המקורי ישתנה
printf("%3d\n", arr[i]);
}
SCE-Chapter-7-Arrays Shayke Bilu PhD
פונקציית מקסימום במערך:דוגמא נוספת
41
#include <stdio.h>
#define SIZE 10
void maxarr(int arr[ ])
}
int max=arr[0],i;
for(i=1; i<SIZE ; ++i)
if(arr[i]>max)
max=arr[i];
printf(“Array maximum value : %d\n", max);
{
SCE-Chapter-7-Arrays Shayke Bilu PhD
פונקציית מינימום במערך:דוגמא נוספת
42
if(arr[i]<min)
min=arr[i];
printf(“Array minimum value : %d\n", min);
{
SCE-Chapter-7-Arrays Shayke Bilu PhD
פונקציית סכום איברים:דוגמא נוספת
43
int main()
}
int arr[SIZE] , i ;
for(i=0 ; i<SIZE ; i++)
scanf("%d", &arr[i]); arr קליטת נתונים למערך
sumarr(arr); קריאה לפונקציה הראשונה
maxarr(arr); קריאה לפונקציה השנייה
minarr(arr); קריאה לפונקציה השלישית
return 0;
{
SCE-Chapter-7-Arrays Shayke Bilu PhD
45
?שאלות
?שאלות
?שאלות
אינדקס עמודה
אינדקס שורה
שם המערך
SCE-Chapter-7-Arrays Shayke Bilu PhD
מערכים דו ממדים
67
67
#include <stdio.h>
#define SIZE 3
void main()
}
int matrix[SIZE][SIZE]={0}, i, j, count;
for(count=1,i=0,j=SIZE/2;count<=SIZE*SIZE;count++)
}
if(i<0)
i+=SIZE;
if(j==SIZE)
j-=SIZE;
while(matrix[i][j])
}
SCE-Chapter-7-Arrays Shayke Bilu PhD
?מה עושה התוכנית הבאה
71
i++;
3X3 מדפיסה ריבוע קסם בגודל
j--;
if(i==SIZE) :התוכנית תדפיס ריבוע קסם
i-=SIZE; The array:
if(j<0) 4 3 8
j+=SIZE; 9 5 1
2 7 6
i++;
if(i==SIZE)
i-=SIZE;
{
matrix[i--][j++]=count;
}
SCE-Chapter-7-Arrays Shayke Bilu PhD
?מה עושה התוכנית הבאה
72
printf("The M array:\n");
for(i=0; i<SIZE; i++)
{
for(j=0;j<SIZE;j++)
printf("%4d",matrix[j][i]);
putchar('\n');
}
}
?שאלות
place is 4!!!
arr[1][1] arr[(1*3)+1]
SCE-Chapter-7-Arrays Shayke Bilu PhD
דוגמא לתוכנית השולחת לפונקציה
מערך דו ממדי המודפס בתוכה
78
#include <stdio.h>
#define ROW 3
#define COL 4
void printArray(int [][ COL]);
int main()
{
int array1[ROW][COL]={{1,2,3,4},{5,6,7,8}, {9,10,11,12}};
printf( "Values in array1 by row are:\n" );
printArray( array1 );
return 0;
}
SCE-Chapter-7-Arrays Shayke Bilu PhD
דוגמא לתוכנית השולחת לפונקציה
מערך דו ממדי המודפס בתוכה
79
?שאלות
?שאלות
#define ROWS 3
#define COLUMN 3
/*function prototype*/
void printArray(int [][COLUMN]);
void initRandomValues (int [][COLUMN]);
void bubblesort(int [][COLUMN]);
SCE-Chapter-7-Arrays Shayke Bilu PhD
מיון בועות למערך דו ממדי
92
void main()
{
int arr[ROWS][COLUMN];
srand(time(NULL));
initRandomValues(arr);
printf("The array before bubble sort:\n");
printf("=======================\n");
printArray (arr);
bubblesort(arr);
printf("The array after bubble sort:\n");
printf("======================\n");
printArray(arr);
}
SCE-Chapter-7-Arrays Shayke Bilu PhD
מיון בועות למערך דו ממדי
93
?שאלות