איך כותבים ב- C פונקציה שמשנה מערך של נתונים ואיך קוראי
עבר עריכה לאחרונה בתאריך 30.04.06 בשעה 18:23 על-ידי nesher (מנהל הפורום)
ואיך קוראים לה? אני מעוניין לכתוב פונקצייה שממיינת מערך. כתבתי את הקוד הבא:
void sortArrays(int *a,int num) {
int change=1,temp; while(change=1) { change=0; for(int i=0;i<num-1;i++) if (a{i}>a{i+1}) { temp=*a{i}; a{i}=a{i+1}; *a{i+1}=temp; change=1; } }
}
בפונקציה שקוראת ל- sortArrays, יש לי מערך שאני מעוניין למיין ולכן אני משתמש בקוד הבא: int keys{50}; sortArrays(&keys,4); אבל מקבל הודעת שגיאה על המרה. איך אני צריך לקרוא לפונקציה.
ערכתי לאחרונה בתאריך 30.04.06 בשעה 18:32 בברכה, chenke
אני מצרף אותו בקובץ מצורף. בכל אופן שיניתי את הקריאה לפונקצייה ע"י ציון רק שם בהמערך ועדיין אני מקבל הודעת שגיאה מהסוג error C2664: 'sortArrays' : cannot convert parameter 1 from 'int ' to 'int *'
אתה מודע לזה שזה בחיים לא יתקיים? כל מה שהפונקציה עושה זה בעצם כלום היא נכנסת ללואת while משנה את הchange ל0 בודקת אם הif מתקיים שזה בוודאי שלא ואז יוצאת מהלולאה
ואתה שואל בעצם איך קוראים לפונקציה מפונקציה? תראה את הבעיה שזה נותן לך בדיוק
מדובר כאן ב "מיון בועות", ומה שה- if הזה שואל זה האם האיבר במיקום i במערך, גדול מהאיבר במקום ה- i+1, במידה וזה מתקיים הוא מחליף בין האיברים האלה. כך הוא עובר על כל num האיברים מהמערך כמה פעמים עד שהוא מגיע למצב שבו change נשאר שווה לאפס וזה אומר שהאברים במערך ממויינים.