מטריצות בשפת C - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

מטריצות בשפת C


efod26

Recommended Posts

אני צריך לכתוב תכנית שבודקת האם מטריצה היא סימטרית ז"א:

9 0 8 6

4 2 5 8

1 5 2 0

6 1 4 9

היא מטריצה סימטרית, כתבתי תכנית לא יפה ולא נראה מתקבל על הדעת אנא נסו לעזור בשינוי התכנית.

#include <stdio.h>

#define N 4

int 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");
}

קישור לתוכן
שתף באתרים אחרים

על האלכסון הראשי. זה צריך להיות משהו כזה.

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");
}

קישור לתוכן
שתף באתרים אחרים

מטריצה סימטרית מוגדרת להיות מטריצה שבה [ 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? :)

קישור לתוכן
שתף באתרים אחרים

realmagic

בינתיים כבר תיקנתי אותה:

#include <stdio.h>

#define N 4

void 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");
}

}

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...