עבור לתוכן

עזרה בשפת C

Featured Replies

פורסם

התשובה צריכה להיות row=1 row=2 row=3

אצלי יוצא כל הזמן no

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

 
#include<stdio.h>
void main()
{
int mat[4][4]={{1,3,7,5},{3,2,35,8},{2,5,6,8},{3,6,5,16}};
int vec[3]={16,21,2},sum,sum2,s,s2,i,j,flag;
flag=0;
for(i=0;i<4;i++){
sum=sum2=0;
for(j=0;j<4;j++){
while(mat[i][j]!=0){
s=mat[i][j]%10;
sum=sum+s;
mat[i][j]=mat[i][j]/10;
}
while(mat[j][i]!=0){
s2=mat[j][i]%10;
sum2=sum2+s2;
mat[j][i]=mat[j][i]/10;
}
}
if(sum==vec[1]){
printf("row=%d ",i);
flag=1;
}
if(sum2==vec[1]){
printf("col=%d ",j);
flag=1;
}
}
if(flag==0)
printf("no\n");
}

תודה מראש לעוזרים!

פורסם

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

פורסם
  • מחבר

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

אז מה בעצם אני צריך לעשות כדי שהאיברים לא יתאפסו כאשר אני מגיע לwhile השני?

קצת קשה לי להבין.

פורסם
  • מחבר

לא נעים לי אבל אני לא מבין ת'טרמינולוגיה :facepalm: . אם זה אפשרי, תסביר לי בשפה פשוטה למאותגרים כמוני.

פורסם

נניח שיש לך משתנה בשם a. כשאתה עושה a=5, אתה משנה אותו. כשאתה עושה a = a+1, אתה משנה אותו.

אותו דבר כשיש לך מטריצה. כשאתה עושה

mat[x][y] = 5

אתה משנה את האיבר במקום ה-x,y במטריצה. דהיינו, אתה משנה את איברי המטריצה.

תאר לך שהיו מוסיפים את הדרישה הבאה: בסוף התכנית, אסור שהמטריצה תהיה שונה ממה שהיא הייתה בהתחלה (לדוגמה, אם אתה עכשיו רוצה להפעיל עליה עוד פעולות כלשהן). איך תעשה את זה?

פורסם
  • מחבר

נניח שיש לך משתנה בשם a. כשאתה עושה a=5, אתה משנה אותו. כשאתה עושה a = a+1, אתה משנה אותו.

אותו דבר כשיש לך מטריצה. כשאתה עושה

mat[x][y] = 5

אתה משנה את האיבר במקום ה-x,y במטריצה. דהיינו, אתה משנה את איברי המטריצה.

תאר לך שהיו מוסיפים את הדרישה הבאה: בסוף התכנית, אסור שהמטריצה תהיה שונה ממה שהיא הייתה בהתחלה (לדוגמה, אם אתה עכשיו רוצה להפעיל עליה עוד פעולות כלשהן). איך תעשה את זה?

הצלחתי

תודה ענקית ידידי! :)

ארכיון

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

דיונים חדשים