Professional Documents
Culture Documents
נושא 7 - מערך דו ממדי + חיפושים
נושא 7 - מערך דו ממדי + חיפושים
3
לכתוב פונקציה המקבלת מערך ,גודלו ושני אינדקסים.
הפונקציה מחליפה בין הערכים הנמצאים באינקסים האלו.
כתבו תוכנית ראשית הקוראת לפונקציה
ג'ויס ווגל 5
int main(){
float array[10];
cout<<"enter 10 numbers: "<<endl;
for(int i=0;i<10;i++)
cin>>array[i];
swap(array,10,3,7);
for(int i = 0; i < 10; i++)
cout<<array[i]<<' ';
return 0;
}
ג'ויס ווגל 6
אפשר בעצם לשמור מערכים בתוך מערכים
לדוגמה:
;]int array[2][3
בעצם בונה את המבנה הבא:
1020
שורות עמודות
ג'ויס ווגל 17
for(int i = 0; i < rows; i++)
for(int j = 0; j < cols; j++)
cin >> matrix[i][j];
ג'ויס ווגל 18
עבור כל שורה
ג'ויס ווגל 20
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++)
cout << matrix[i][j];
cout << endl;
}
ג'ויס ווגל 21
לכתוב את הקוד שיבנה לוח כפל ממספרים 0עד 5כולל.
;]int mult[6][6
ג'ויס ווגל 25
i = 1; i = 3;
for (j=0; j<6; j++) for (j=0; j<6; j++)
mult[i][j]=i*j; mult[i][j]=i*j;
i = 4;
i = 2;
for (j=0; j<6; j++)
for (j=0; j<6; j++)
mult[i][j]=i*j;
mult[i][j]=i*j;
i = 5;
for (j=0; j<6; j++)
mult[i][j]=i*j;
ג'ויס ווגל 26
for(i = 0; i < 6; i++)
for (j=0; j<6; j++)
mult[i][j]=i*j;
ג'ויס ווגל 27
int mult[6][6];
ג'ויס ווגל 28
כתבו תוכנית המחשבת ומדפיסה לוח כפל מ 1-10כולל
ג'ויס ווגל 30
נתון מערך בשם vectorהמכיל מספרים הממוין בסדר
עולה.
איבר האחרון במערך שמור באינדקס .n
ג'ויס ווגל 32
cin>>num;
i=n;
while(vector[i]>num && i>=0)
{
vector[i+1]=vector[i];
i--;
}
vector[i+1]=num;
ג'ויס ווגל 33
כששולחים מערך כלשהו (כולל מערך דו ממדי) רק כותבים
את שם המערך
לדומגה:
;]int m[3][4
;)foo(m, 3, 4
דוגמה
ג'ויס ווגל 39
if (testRows(magic,sum) &&
testColumns(magic,sum) &&
testMainDiagonal(magic,sum) &&
testSecondDiagonal(magic,sum))
cout<<"magic square";
else
cout<<"not a magic square";
return 0;
}
ג'ויס ווגל 40
bool testRows(const int magic[][3], int sum) {
for (int i=1;i<3;i++) {
int tmp=0;
for (int j=0;j<3;j++)
tmp+=magic[i][j];
if (tmp!=sum)
return false;
}
return true;
}
ג'ויס ווגל 41
bool testColumns(const int magic[][3], int sum){
for (int j=0;j<3;j++) {
int tmp=0;
for (int i=0;i<3;i++)
tmp+=magic[i][j];
if (tmp!=sum)
return false;
}
return true;
}
ג'ויס ווגל 42
bool testMainDiagonal(const int magic[][3], int
sum){
int tmp=0;
for (int i=0;i<3;i++)
tmp+=magic[i][i];
return tmp==sum;
}
ג'ויס ווגל 43
bool testSecondDiagonal(const int magic[][3], int
sum)
{
int tmp=0;
for (int i=0, j=2; i<3; i++,j--)
tmp+=magic[i][j];
return tmp==sum;
}
ג'ויס ווגל 44
נתון מערך וגודלו ורוצים לדעת האם מספר מסוים מופיע
במערך? אם כן מדפיס את מקומו ואם לא אז מדפיס הודעה
מתאימה
המספר נמצא
אם יצאנו כי הגענו לסוף המערך אז להדפיס הודעה שזה לא
נמצא
ג'ויס ווגל 47
int linearSearch(int a[], int n, int num){
for(int i = 0; i < n; i++)
if (a[i]==num)
return i;
return -1;
}
ג'ויס ווגל 48
int linearSearch(int a[], int n, int num){
for(int i = 0; i < n; i++)
if (a[i]==num) כי אינדקס שלילי במערך
return i;
return -1;
}
ג'ויס ווגל 49
#include <iostream>
using namespace std; int main(){
int vec[8]={1,23,17,9,21,32,4,5};
int linearSearch(int a[], int n, int num)
int i=0, num;
{
cout<<"please enter a number\n";
for(int i = 0; i < n; i++)
if (a[i]==num)
cin>>num;
return i; int index = linearSearch(vector, 8);
return -1; if(index == -1)
} cout << “Not found”;
else
cout << “Found at position”
<< index;
}
ג'ויס ווגל 50
אם המערך כבר ממוין אז חבל לעבור על כל המערך
מהתתחלה עד הסוף
נתחיל באמצא
אם האיבר הבא במערך הראשון קטן מהאיבר הבא במערך השני
להעתיק את האיבר מהמערך הראשון למערך החדש
לקדם לאיבר הבא במערך הראשון
אחרת
להעתיק את האיבר מהמערך השני למערך החדש
לקדם לאיבר הבא במערך השני
אחרת
int vec1[5]={1,4,6,7,9};
int vec2[7]={2,4,5,6,7,8,10};
int vec3[12];
int i=0,j=0,k=0;
ג'ויס ווגל 56
while (i<5 && j<7)
{
if (vec1[i]<vec2[j])
vec3[k]=vec1[i++];
else vec3[k]=vec2[j++];
k++;
}
ג'ויס ווגל 57
while (i<5)
vec3[k++]=vec1[i++];
while (j<7)
vec3[k++]=vec2[j++];
for(i=0;i<12;i++)
cout<<vec3[i]<<' ';
return 0;
}
ג'ויס ווגל 58
https://www.geeksforgeeks.org/bubble-sort/
7, 8, 5, 4, 2, 6, 3
ג'ויס ווגל 59
void bubbleSort(int vec[],int size){
int last,i;
for (last = size-1; last > 0; last--)
for (int i = 0; i < last; i++)
if (vec[i+1] < vec[i]){
int temp = vec[i+1];
vec[i+1] = vec[i];
vec[i] = temp;
}
}
ג'ויס ווגל 60
https://www.geeksforgeeks.org/insertion-sort
/
7, 8, 5, 4, 2, 6, 3
ג'ויס ווגל 61
void insertSort(int vec[],int size){
int first,i;
for (first = 1; first < size; first++) {
int tmp = vec[first];
for (i=first; i > 0 && tmp < vec[i-1]; i--)
vec[i] = vec[i-1];
vec[i] = tmp;
}
}
ג'ויס ווגל 62
>include <algorithm#
ג'ויס ווגל 64
#include <iostream >
#include <algorithm>
using namespace std;
int main()
{
int size = 5;
int arr[] = { 1, 6, 2, 9, 3 };
sort(arr, arr + size);
ג'ויס ווגל 65