עבור לתוכן

זקוק לעזרה עם פונקציה שתקלוט מספרים מהמשתמש אל תוך מערך ב-C

Featured Replies

פורסם

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

כחלק מהתוכנית אני צריך לרשום פונקציה שאמורה לקבל מהמשתמש רשימה של 20 מספרים מינימום, בגודל של 10 תוים כל אחד. זה מה שיצא לי עד עכשיו -

double GetArr(double array[ARR]){
int i;
for(i=0;i<ARR;i++)
scanf("%lf", &array[i]);
return array[ARR];
}

עד כאן הכל יפה והכל עובד מצויין. הבעיה מתחילה כאשר אני מנסה להגביל את הקלט.

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

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

פורסם

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

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

הבעיה במימוש הנוכחי שלך היא שכיוון שמראש המערך מוגבל בגודלו (גודל ARR) אז אתה לא יכול לקרוא יותר מהמספר הזה של מספרים מהקלט. בשביל לקלוט יותר מזה, אתה צריך להשתמש במערך דינמי (שהוקצה ע"י malloc) ולהגדיל אותו כל פעם שצריך (ע"י realloc).

פורסם

ואז כמובן במקום להשתמש בלולאת FOR אתה תשתמש בלולאת WHILE שם יהיה תנאי העצירה שלך.

פורסם
  • מחבר

אוקיי, כנראה שעוד לא הגענו לmalloc, או שאני לא מקשיב מספיק טוב בהרצאות :nixweiss:

בכל מקרה, הבעיה אצלי כרגע זה לא הגודל העליון, אלה הגודל התחתון... אני צריך לקבל מהמשתמש מינימום 20 איברים... ולא 20 בידיוק. איך אני עוצר את הקלט ב25 לדוגמה?

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

תודה על ההתייחסות :hi:

פורסם

אתה צריך תנאי עצירה. או לבדוק בתא האחרון [array[i אם הוא 1- או לבדוק על משתנה נוסף לפני ההשמה.

ארכיון

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

דיונים חדשים