עבור לתוכן

עזרה בתרגיל בשפת c לסטודנט

Featured Replies

פורסם

תבדוק במה אתה כופל את atzeret כש-i=1 ותבין מה הבעיה.

חוץ מזה, שים לב לעוד משהו קטן - כרגע אתה תמיד מוסיף ל-value, כשאתה אמור להוסיף ולהחסיר לסירוגין.

פורסם
  • מחבר

לכפול ב - 0 אכן לא היה חכם כל כך

אני כופל ב i+1 כמובן ולא במינוס

עריכה : בקשר לvalue אני עובד כרגע על מונה מסויים שמבדיל מתי האיבר זוגי ומתי הוא לא .

אגב - הקטע עם העצרת גאוני לא הייתי חושב על זה בחיים

פורסם

שים לב - צריך לכפול ב-2i+1 ולא סתם i+1, כי אחרת כש-i=5 תכפול ב-10*6 במקום 10*11.

פורסם
  • מחבר

כן , לזה התכוונתי. רק קיצרתי[br]פורסם בתאריך: 16.11.2009 בשעה 21:22:38



cin>>x;

power = x;
atzeret = 1;
value = 1;
i=0;
do
{
i=i+1;
atzeret = atzeret*2*i*(i+1);
power = power*x*x;
counter = counter+1;

if (counter % 2 == 0)

value = value+(power/atzeret);

else
value = value - (power/atzeret);
}
while(value>=0.001 || value<=-0.001);


cout<<" sin function of "<<x<<" is "<<value<<"\n\n";

cout<<"please enter a value to be calculated\n";

הוא מדפיס לי -1.#ind . בדקתי בגוגל וזה אומר שיש משתנה לא מוגדר או משהו כזה. אבל אני עוקב אחרי התוכנית ולא מבין מה לא עשיתי נכון.

הכל נראה לי כשורה.

אני יושב על התרגיל הזה יותר מדי זמן...

פורסם

תבדוק את תנאי העצירה שלך, ועדיין יש לך את הטעות שציינתי בעצרת.

פורסם
  • מחבר

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

תנאי העצירה הוא לפי התרגיל. הכל נראה כשורה. מתי שה value יהיה קטן מ0.001 בערך מוחלט , הלולאה תיעצר

פורסם

קודם כל, איזה x אתה מנסה לתת?

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

פורסם
  • מחבר

וואי אני לא מצליח להבין מה לא בסדר אני משתגע

א) העצרת מתוקנת ועובדת - נבדק.

ב) ניסיתי לשנות את הערך ההתחלתי של value ל x אך גם זה לא עבד

(לא משנה איזה ערך אני נותן ל x הוא פולט אותה תשובה )

פורסם

הערך ההתחלתי של value אכן צריך להיות x, אבל תנאי העצירה לא צריך להיות תלוי ב-value, אלא הוא תלוי בערך של האיבר הבא בטור. חוץ מזה, לא אתחלת את counter.

פורסם
  • מחבר

אתחלתי את counter בתחילת התוכנית בהגדרת המשתנים אך לא העתקתי את קטע הקוד הזה. טעות שלי.

אז ככה , התוכנית עובדת מצויין ומחזירה ערכים מדוייקים עכשיו. ניסיתי שברים עשרוניים , 1 , 2 , 3, -1 , -2

כשאני מנסה לקלוט את הערך 4 התוכנית לא פועלת. אני לוחץ אנטר והיא כאילו בstand by לא מגיבה.

אני כמעט בטוח שהוא עדיין צריך לבצע את הפעולות שבלולאת ה - while מכיוון ש סינוס של 4 במחשבון הוא -0.7568.....

גם את הערך 3.1 הוא לא מקבל.

עריכה : כדי לתקן את התוכנית באמת שיניתי את תנאי העצירה ל power חלקי atzeret .

פורסם

סבבה.

דרך אגב, במקום ה-counter אתה יכול להחזיק משתנה בשם sign שכל פעם יהיה 1 או 1- לסירוגין (בכל איטרציה תכפיל אותו ב1-), ואז במקום לעשות if אתה יכול פשוט להוסיף ל-value את sign*power/azeret.

לגבי ה-4: מוזר לי קצת, תנסה להוסיף הדפסות ביניים של value ושל power/atzeret כדי לראות למה זה קורה (הניחוש שלי הוא שיש לולאה אינסופית, אני פשוט לא בטוח למה).

פורסם
  • מחבר

יישמתי את רעיון ה sign . באמת חסך כמה שורות . תודה :)

לגבי הבדיקה בשלבים, אעשה זאת מחר לאחר הלימודים כבר כי חסרות לי כמה שעות שינה טובות. ( כמו לכולנו ) .

בכל מקרה תודה רבה רבה לך, היית לי כמו מורה ממש . אתה ממש אחלה של בנאדם.

ואני אעדכן אותך לגבי הבדיקה מחר אם זה יעניין אותך.

שיהיה לילה טוב!

פורסם
  • מחבר

גיליתי את הבעיה

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

הגדרתי אותו כ double וכעת זה עובד מצויין =]

ארכיון

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

דיונים חדשים