עבור לתוכן

יש לי בעייה באחד התרגילים

Featured Replies

פורסם

יש לי תרגיל לכתוב תוכנית שקולטת מספרים למערך דו ממדי ומדפיסה את:

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

אז הסתבכתי פה :kopfpatsch:

עשיתי:

#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;

}

וזה מחזיר לי תמיד את השורה האחרונה...

אני יודע שזה לא נכון אבל אין לי מושג איך לתקן את זה.

אתם יכולים לעזור לי בבקשה?

פורסם

יש לך כמה בעיות בפונקציה שמחשבת ממוצע של שורה

אתה שולח את מספר בשורה שאתה רוצה ליבדוק....

אבל המישתנים שבהם אתה שומר הם משתנים מקומים להן אתה לא יכול להשוות איפה 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;

}

פורסם
  • מחבר

תודה רבה:)

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

אני צריך להדפיס את העמודות שהספרה 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;}

}

איך הסוגרים אמורות להיות?

פורסם

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;

}

}

}

}

פורסם
  • מחבר

אמממ אחי נראה לי גם בזה יש בעייה(זה לא מחזיר כלום), בלולאה השנייה זה אמור רק לספור את הכמות של הסיפרה 5...

אז ניסיתי להוריד את הסוגריים מהלולאה השנייה ואז זה מחזיר לי 3 3. :|

פורסם

עודכן, סתכל על ה BOLD

פורסם

תיקון קטנטן:


#define NUM 5
#define MIN 1
void 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) אבל זה לא כל כך משנה.

פורסם

ההדגשה מופיע כחלק מהקוד לפני ה DEFINE ואחריו... וה - [b\]

פורסם

מי לימד אותך להעביר מערכים על ה- stack?

תמסור לו :bash:

ארכיון

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

דיונים חדשים