עבור לתוכן

מיון מבנים בעזרת פונקציות (שפת C)

Featured Replies

פורסם

שלום,

יש לי מערך בשם olympic_state שהוא מטיפוס מבנה olympic_state


typedef struct{
char state[20];
int num_of_athlets;
int gold,silver,bronze;
}olympic_state

אני צריך למיין אותם לפי מס' המדליות (של כולם ביחד),עשיתי את זה בפונקציה הבאה:




void order()
{
int temp;
for(p=olympic_states;p-olympic_states<50;p++)
{
if( (*P).gold +(*P).silver + (*p).bronze ) < ( (*P+1).gold + (*P+1).silver + (*P+1).bronze)
{
temp = (*P).gold + (*P).silver + (*P).bronze;
(*P).gold + (*P).silver + (*P).bronze = (*P+1).gold + (*P+1).silver (*P+1).bronze
(*P+1).gold + (*P+1).silver + (*P+1).bronze = temp;
}
}
for(P=olympic_states;P-olympic_states<50;P++)
{
printf("\n %s ".P->state);
}
}

רציתי לשאול האם זה יעבוד?

תודה

פורסם

השורה הבאה לא תתקמפל:


(*P+1).gold + (*P+1).silver + (*P+1).bronze = temp;

תוצאת חיבור הוא לא בדיוק משתנה אלא ערך זמני שלא ניתן להציב לתוכו (RVALUE).

למה לא לנסות לקמפל לפני ששואלים?

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

פורסם
  • מחבר

לא ממש הבנתי את החלק הראשן..

אני רגיל לעבוד אם אינדקסים ושם אני יודע שהדבר הנ"ל יעבוד...

פורסם

לא, הוא לא.

תנסה לכתוב את הפונקציה עם אינדקסים ואז תתרגם אותה למצביעים.

פורסם
  • מחבר

לגבי שמחליפים צריך להחליף את כל השדות, הכוונה לכל המשתנים באותו מבנה?

פורסם

כן (רק שהם נקראים שדות או איברים של המבנה, לא משתנים).

ארכיון

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

דיונים חדשים