עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

פורסם

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

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? :)

פורסם

לא כתבתי ב-C כבר שנים - נדמה לי שחלק מהסינטקס שלי לקוח מC++ וחלק מPL/SQL ו-ADA...:)

פורסם
  • מחבר

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

}

פורסם

אחלה. רק כמה הערות קטנות:

א. כמו שאמרתי קודם, אתה מדפיס את המטריצה הפוך.

ב. בסוף בסוף מספיק רק else ולא צריך else if (זו בדיקה מיותרת).

פורסם
  • מחבר

כן הפכתי את זה וביטלתי את הבדיקה האחרונה, שוב תודה...

פורסם

אפשר גם לעצור את הלולאות ברגע שמצאת אי-סימטריות...

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.