פורסם 2007 בדצמבר 1417 שנים אני מתחיל ללמוד ואני עושה תוכנה שעושה ממוצע של שלושה מספרים כאשר התוכנה קולטת שלושה מספרים שלמים ומדפיסה את הממוצע שלהם.הכל יוצא לי טוב חוץ מזה שאם הממוצע שלי הוא לא מספר שלם התוכנה לא מדפיסה לי את השארית למשל 1 + 4 + 6 זה 11 אז הממוצע שיוצא לי הוא 3.00 ולא עם מה שאמור לבוא אחרי הנקודה למרות שהשתמשתי ב-%1f.#include <stdio.h>int main(void){ int a, b, c, sum; double average = average; printf("please enter three numbers : \n"); scanf("%d%d%d" ,&a, &b, &c); sum = a + b + c; average = sum /3; printf("the everage number is : %2.2lf\n", average);fflush(stdin);getchar();return 0;}
פורסם 2007 בדצמבר 1417 שנים אתה מחלק מספר שלם במספר שלם, ואז מציב את התוצאה ב-average כלומר קודם נעשה עושה חילוק שלם ורק אז יש המרה של התוצאה ל-double.אתה רוצה לעשות: average = (double)sum / 3.0;
פורסם 2007 בדצמבר 1417 שנים בושרה הזאת:average = sum /3;הערך שנכנס ל-average הוא int, כי תוצאת החישוב היא int.הפתרון הוא פשוט לגרום לתוצאה של החילוק להיות doubleaverage = sum /3.0;
פורסם 2007 בדצמבר 1417 שנים מחבר אוקיי הבנתי תודה רבה.ועוד משהו :אפשר בבשקה הסבר מה זה אומר ומה ההבדלים :a++או ++aלמשל למה זה :int a=2, b=2, c, d;c = a++;d = ++b;הוא בדיוק כמו זה:int a=2, b=2, c, d;c = a;a = a + 1;b = b + 1;d = b;
פורסם 2007 בדצמבר 1417 שנים ככה זה מוגדר בשפה...a++מבצע קודם את הפעולה על הערך הנוכחי של a (השמה, השוואה, קריאה לפונקציה), ואז מקדם את הערך של a.++aמבצע קודם את הקידום של הערך של a, ואז מבצע את הפעולה על הערך החדש.
פורסם 2007 בדצמבר 1417 שנים מחבר גם למה כתבת double average = average; ?לא יודע למה.אני ממש חדש בזה ולא ממש עדיין מבין מה אני עושה.איך הייתי צריך להגדיר אותה ?
פורסם 2007 בדצמבר 1417 שנים בגדול כדאי לאתחל את זה לערך כמו 0 או איזה מספר. אבל מכיוון שפה ספציפית אתה לא קורא את המשתנה לפני שאתה משתמש בו, אתה יכול אפילו לא לאתחל אותו בכלל.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.