עבור לתוכן

צריך עזרה ב-C

Featured Replies

פורסם

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

הכל יוצא לי טוב חוץ מזה שאם הממוצע שלי הוא לא מספר שלם התוכנה לא מדפיסה לי את השארית למשל 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;
}

פורסם

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

אתה רוצה לעשות:


average = (double)sum / 3.0;

פורסם

בושרה הזאת:

average = sum /3;

הערך שנכנס ל-average הוא int, כי תוצאת החישוב היא int.

הפתרון הוא פשוט לגרום לתוצאה של החילוק להיות double

average = sum /3.0;

פורסם
  • מחבר

אוקיי הבנתי תודה רבה.

ועוד משהו :

אפשר בבשקה הסבר מה זה אומר ומה ההבדלים :

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;

פורסם

ככה זה מוגדר בשפה...

a++

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

++a

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

פורסם

גם למה כתבת double average = average; ?

פורסם
  • מחבר

גם למה כתבת double average = average; ?

לא יודע למה.

אני ממש חדש בזה ולא ממש עדיין מבין מה אני עושה.

איך הייתי צריך להגדיר אותה ?

פורסם

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

ארכיון

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

דיונים חדשים