עבור לתוכן

שפת C\ מערכים[שאלה]

Featured Replies

פורסם

הי חברה

יש לי שאלה

מערך בן 128 מקומות

ממולא במפסרים אקראים...אחרי המילוי צריך למיין אותו בשיטת

select

עשיתי וזה לא מחזיר את זה ממוין חחח איך אני קורא לפונקציה

תעזרו לי בבקשה עם הקוד!

תודה רבה

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <conio.h>
#define n 128

void select(int a[],int size)
{
int i,j,temp;
for(i=0;i<size-1;i++)
{
for(j=i+1;j<size;j++)
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}

}
}

void main()
{
randomize();
clrscr();
int a[n],i,j;

//klita
for(i=0;i<n;i++)
a[i]=random(5000)+1;
//hadpasa
for(i=0;i<n;i++)
Select(a[i],n);
printf("%5d",a[i]);
printf("\n");
getch();



}




פורסם

הוא לא נותן לך הערה בקומפילציה?

הבעיות ששמתי לב אליהן:

1) אתה צריך לשלוח לפונקציה את המערך, לא איבר איבר(כפי שהחתימה מבקשת).


select(a, n);

2) תשמור על הזחות נכונות.

3) מומלץ לשים אחרי כל תנאי ולולאה בלוק של קוד(ולא שורה בודדה). הבלוק עצמו יכול להיות בנוי משורה אחת.

פורסם
  • מחבר

זה עדין כותב לי שגיאה

הוא עושה:

select shoulde have prototype

מישהו מוכן לתקן את הקוד ולהראות לי פה?

פורסם

אני לא הכי בקיא בכל השמות שונים שיש לשיטות מיון שונות אבל SELECT

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

?

וכדי לבדוק איפה אתה טועה אתה יכול להדפיס כל פעם שאתה מבצע שינוי..

פורסם

אני לא יודע אם השגיאה במקור (או שנבעה מההעתקה לפורום), אבל ב-main קראת לפונקציה Select, עם S גדולה. C היא case sensitive, ככה שאתה חייב לקרוא לפונקציה באותו שם (select). הקומפיילר חשב שאתה מנסה לגשת לפונקציה בשם Select, ולכן צעק כשלא מצא אותה.

פורסם

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

ארכיון

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

דיונים חדשים