עבור לתוכן

תרגיל בC מערך דו מימדי

Featured Replies

פורסם

נתקעתי בתרגיל ..אשמח לקבל עזרה (פיתרון)

הכוונה..כל דבר :(

תרגיל 1

מערך דו-מימדי יקרא תקין אם מתקיימים שני התנאים הבאים:

• בכל שורה במערך סכום איברי השורה שווה למספר השורה.

• כל איברי האלכסון חיוביים.

דוגמא למערך תקין:

4- 12- 0 15- 31

0 2 3- 1 1

11 23- 4 2- 12

7- 2 3 0 5

1 1 0 1 1

דוגמא למערך לא תקין:

5 4 3 2 1

0 9 8 7 6

5 4 3 2 1

0 9 8 7 6

5 4 3 2 1

• כתוב פונקציה המקבלת מערך דו ממדי של מספרים שלמים ומספר שורה ,row

ומחזירה 'אמת' אם סכום איברי שורה row שווה המספר row.

• כתוב פונקציה המקבלת את המערך, ומחזירה 'אמת' אם כל איברי האלכסון חיוביים.

• כתוב תכנית המציגה את המערך, ומזמנת את הפונקציות שכתבת בסעיפים א', ב' על מנת להציג הודעה אם המערך תקין, או שאינו תקין.

• המערך נקלט ממקלדת או מאותחל בתכנית הראשית.

• להגיש פלטים על מערך תקין לבחירתך וגם מערך שאינו תקין.

דוגמא פלט:

הדפסת של המטריצה הראשונה ואז

arrary is normal

כנ"ל לגבי השנייה

array is not normal

פורסם

#include <stdio.h>
#include <stdlib.h>
/* assuming array of int */

int getRow( int row ,int *array, int size );
int checkdiagonal( int *array, int size);
int checkArray(int *array, int size);

int main(void) {

int array[5][5] = {31,-15,0,-12,-4,1,1,-3,2,0,12,-2,4,-23,11,5,0,3,2,-7,1,1,0,1,1};
if( 1 == checkArray( (int*)array, 5) ) printf( "\nYAY\n");

return 0;
}
int checkArray(int *array, int size) {

if(size < 1 ) return -1;
int flag = 0;
int index = 0;
int indexCol = 0;
while(index < size) {
while( indexCol < size ) {
printf("%d ", *(array + size * index + indexCol) );
++indexCol;
}
printf("\n");
if( -1 == getRow( index, array, size) ) flag = 1;
indexCol=0;
++index;
}
printf("flag = %d\n", flag) ;
if( (1 == flag) || (-1 == checkdiagonal( array, size)) ) return -1;
return 1;
}


int getRow( int row ,int *array, int size ) {
/*assmuing NxN matrix */
if( (row < 0) && (size < 1) ) return -1;

int sum = 0;
int index = 0;
for(index = 0 ; index < size; ++index) {
sum+=*(array + size * row + index);
}
if (sum == row) return 1;
return -1;
}

int checkdiagonal( int *array, int size) { /* assuming NxN matrix */
if(size<1) return -1;
int index = 0;
while(index < size) {
if( *(array + size*index + index) <1 ) return -1;
++index;
} /*assuming 0 is a non-positive */
return 1;
}

בדקתי את זה רק עם מה שיש בתוך main

אם יש טעויות תסלח לי 4 בבוקר התחלתי לכתוב את זה.. (סעמק חשבתי שיקח לי חצי שעה!!!!!!!!! לכו תזכרו איך מעבירים מערך דו מימדי לפונקציה וניגשים אליו {סטודנט למדעי המחשב שנה שלישית} )

אני הייתי מציע לך לנסות לבד ולא להעתיק כי לומדים רק מניסיון

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים