פורסם 2005 במרץ 2420 שנים יש לי תרגיל לכתוב תוכנית שקולטת מספרים למערך דו ממדי ומדפיסה את: א. מספר השורה בה ממוצע האיברים הגדול ביותר. אז הסתבכתי פה עשיתי: #include <conio.h> #include <stdio.h> #define X 3 #define Y 3 typedef int arr[X][Y]; void get(arr a); int avg(arr a, int i); int main(){ arr a; int i,j,x; get(a); for(i=0; i<X; i++) x=avg(a,i); printf("%d",x); getch(); } void get(arr a){ int i,j; for(i=0; i<X; i++) for(j=0; j<Y; j++){ printf("Enter number: "); scanf("%d",&a[j]);}} int avg(arr a, int i){ int index,sum,max=0,j; for(j=0; j<Y; j++) sum=sum+a[j]; if(sum>max){ max=sum; index=i;} return index; } וזה מחזיר לי תמיד את השורה האחרונה... אני יודע שזה לא נכון אבל אין לי מושג איך לתקן את זה. אתם יכולים לעזור לי בבקשה?
פורסם 2005 במרץ 2420 שנים יש לך כמה בעיות בפונקציה שמחשבת ממוצע של שורהאתה שולח את מספר בשורה שאתה רוצה ליבדוק....אבל המישתנים שבהם אתה שומר הם משתנים מקומים להן אתה לא יכול להשוות איפה MAX גדול יותרint avg(arr a){ int i,j,index; float sum, max; sum =0; max = 0; for(i=0;i<X;i++) { for(j=0;j<Y;j++) sum+= arr[j]; if(sum > max) { index = i; max = sum; } sum = 0; }return index;}
פורסם 2005 במרץ 2420 שנים מחבר תודה רבה אתה יכול אולי לעזור לי בעוד משהו קטן?(זאת הפרוצדורה האחרונה שחסרה לי בשביל להשלים ת'תרגיל...) אני צריך להדפיס את העמודות שהספרה 5 מופיעה בהם יותר מפעם אחת. אז עשיתי את זהאני חושב שיש לי בעיות עם הסוגריים של הלולאות...) void num5(arr a){ int i,j,count; for(i=0; i<X; i++){ for(j=0; j<Y; j++) if(a[j]==5) count++; if(count>1) printf("%d\t",j); count=0;} } איך הסוגרים אמורות להיות?
פורסם 2005 במרץ 2420 שנים void num5(arr a){ int i,j,count; count = 0; for(i=0; i<X; i++) { for(j=0; j<Y; j++) { if(a[j]==5) count++; if(count>=1){ printf("%d\t",j); count=0;} } }}
פורסם 2005 במרץ 2420 שנים מחבר אמממ אחי נראה לי גם בזה יש בעייה(זה לא מחזיר כלום), בלולאה השנייה זה אמור רק לספור את הכמות של הסיפרה 5... אז ניסיתי להוריד את הסוגריים מהלולאה השנייה ואז זה מחזיר לי 3 3.
פורסם 2005 במרץ 2420 שנים תיקון קטנטן:#define NUM 5#define MIN 1void num5(arr a){ int i,j,count; count = 0; for(j=0; j<Y; j++) { for(i=0; i<X; i++) { if(a[i][j]==NUM) count++; if(count>MIN) { printf("%d\t",j); count=0; break; } } }}עריכה: טוב, תיקנתי את הBOLD.זה צריך להיות גדול(יותר מפעם אחת - < ולא פעם אחת ומעלה <=)הוספתי כמה קבועים ליופי. השתמשתי בBREAK כי יוצאים מהלולאה ועוברים לשורה הבאה. כמו כן, שיניתי גם את סדר הלולאות, כדי שהפנייה לתא מסויים במטריצה תהייה ברורה יותר(i,j) ולא (j,i) אבל זה לא כל כך משנה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.