עזרה קטנה בבקשה

nightmare89

New member
עזרה קטנה בבקשה

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

DNile

New member
נורא נורא בסיסי.

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

nightmare89

New member
אממ

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

DNile

New member
אני ילד בן 10.

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

erezsh

New member
אני לא מבין

למה שילד בן 10 יאלץ לעשות כזה דבר נורא במקום להיות בביה"ס וללמוד דברים שימושיים.
 

DNile

New member
נו, זה פשוט.

אף פעם לא יצא לך לתת לאחיך הקטן לעשות את השיעורי בית שלך במקומך?
 
צודק 100%...../images/Emo26.gif

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

ilankt

New member
לגלות? התשובה נמצאת כאן, על אחריותך

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

nightmare89

New member
עזרה

אמממ עשיתי משהו ויש בעיה :< תעזרו פליזוש
#include <stdio.h> #include <math.h> void closer(int a[]); void main() // קלט: מערך בן 20 תאים // פלט: מספר פונקציות { int array[20]; closer(array); }//main void closer(int a[]) // טענת כניסה: ממוצע מערך // טענת יציאה: מספר הכי קרוב לממוצע { int i, x, sum=0; float avg, mini; for (i=0;i<20;i++) sum+=a; avg=(float)sum/(i+1); mini=(float)abs(avg-(float)a[1]); for (x=1;x<20;x++) { if ((float)abs(avg-(float)a[x]) < mini) mini=(float)abs(avg-(float)a[x]); }//for printf("The closer number is: %d\n",mini); printf("\n\n"); }//closer

הבעיה היא:
--------------------Configuration: bla - Win32 Debug-------------------- Compiling... bla.cpp C:\Program Files\Microsoft Visual Studio\MyProjects\bla\bla.cpp(151) : warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data C:\Program Files\Microsoft Visual Studio\MyProjects\bla\bla.cpp(154) : warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data C:\Program Files\Microsoft Visual Studio\MyProjects\bla\bla.cpp(155) : warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data Linking...​
 
למעלה