פורסם 2008 בדצמבר 1616 שנים אני צריך לכתוב תכנית שבודקת האם מטריצה היא סימטרית ז"א:9 0 8 6 4 2 5 8 1 5 2 0 6 1 4 9היא מטריצה סימטרית, כתבתי תכנית לא יפה ולא נראה מתקבל על הדעת אנא נסו לעזור בשינוי התכנית.#include <stdio.h>#define N 4int main(){ int matrix[N][N] = { {6,8,0,9}, {8,5,2,4}, {0,2,5,1}, {9,4,1,6} }; int i ,j ,z = 0; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d\t",matrix[j][i]); } printf("\n\n"); } printf("\n\n"); if (matrix[0][0] == matrix [3][3]) if (matrix[1][1] == matrix [2][2]) { z=2; } for (j = 1 ,i=0; j < N; j++) { if (matrix[j][i] == matrix [i][j]) { z+=1; } } for (j = 2; j < N; j++) { for (i =1; i < 2; i++) { if (matrix[j][i] == matrix [i][j]) { z+=1; } } } if (z==7) printf("Yes. This Matrix Is Symmetric\n"); else printf("No. This Matrix Is Not Symmetric\n");}
פורסם 2008 בדצמבר 1616 שנים על האלכסון הראשי. זה צריך להיות משהו כזה.bool sym = true;for (int i=0; i < N && sym == true; ++i){ for (int j=0; j < N && sym == true; ++j) { if (MAT[i][j] != MAT[j][i]) { sym = false; } }}if sym == true { printf("Joy to the world, the matrix is symnatic\n");}else{ printf("God damn it - another non-symnatic matrix!\n");}
פורסם 2008 בדצמבר 1616 שנים מטריצה סימטרית מוגדרת להיות מטריצה שבה [ a[i ][j] == a[j][i לכל i,j. (אפשר להחליף את השורות בעמודות והיא תישאר אותו דבר) קודם כל, ההדפסה שלך הפוכה - אתה צריך להדפיס כל פעם את [matrix[i ][j ולא להיפך. חוץ מזה, לא הבנתי למה עשית את כל הקטע עם איברי האלכסון ([matrix[0][0], matrix[1][1 וכו'), ולמה יש לך שתי לולאות שעוברות על איברי המטריצה. תעשה לולאה אחת, ובה תבדוק אם [ matrix[i ][j] != matrix[j][i (מספיק שעבור זוג i,j אחד כזה הם שונים, אז המטריצה לא סימטרית) עריכה: טוב, אני רואה ש-real magic כבר ענה (שים לב שהקוד שלו זה לא בדיוק C תקני, אז תתקן מה שצריך). ומה זה symnatic?
פורסם 2008 בדצמבר 1616 שנים לא כתבתי ב-C כבר שנים - נדמה לי שחלק מהסינטקס שלי לקוח מC++ וחלק מPL/SQL ו-ADA...
פורסם 2008 בדצמבר 1616 שנים מחבר realmagicבינתיים כבר תיקנתי אותה:#include <stdio.h>#define N 4void print(int matrix [N][N]);void output(int matrix [N][N]);int main(){ int i ,j; int matrix[N][N] = { {1,2,1,0}, {2,0,3,0}, {1,3,0,0}, {0,0,0,1} }; print(matrix); output(matrix);}void print(int matrix [N][N]){ int i ,j; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d\t",matrix[j][i]); } printf("\n\n"); } printf("\n\n");}void output(int matrix[N][N]){ int i ,j ,z = 0; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { if (matrix[j][i] != matrix [i][j]) { z=1; } } } if (z == 1) { printf("NO. This Matrix Is Not Symmetric\n"); } else if (z==0) { printf("Yes. This Matrix Is Symmetric\n"); }}
פורסם 2008 בדצמבר 1616 שנים אחלה. רק כמה הערות קטנות:א. כמו שאמרתי קודם, אתה מדפיס את המטריצה הפוך.ב. בסוף בסוף מספיק רק else ולא צריך else if (זו בדיקה מיותרת).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.