זקוק לעזרה בסוויצ' שנמצא בתוך while. שפת C. - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

זקוק לעזרה בסוויצ' שנמצא בתוך while. שפת C.


pain_killer12

Recommended Posts

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

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

	int x,sum,counter,temp;
double avg;
counter = 0;
sum = 0;
scanf("%d",&x);
scanf("%d",&temp);
while (temp != 999)
{
if (temp>x)
{
sum = sum + temp;
counter = counter + 1;
}
scanf("%d",&temp);
}
if(counter == 0)
{
printf("0\n");
}
else
{
avg = sum/counter;
printf("%f\n",avg);
}

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

עבור הקלט:

8

9

10

999

הפונקציה מדפיסה:

9.00000

במקום 9.50000

למה העיגול?

קישור לתוכן
שתף באתרים אחרים

זה תלוי מהו סוג המשתנים שאתה מחלק, התוצאה תמיד תהיה מסוג המשתנה הגדול יותר.

לדוגמה חילוק של char בint יתן int, או חילוק של float בint יתן float.

הדרך הפשוטה לתקן את זה היא כמו שהראו לך מיקודם - לבצע Casting לסוג משתנה שכן יכול להכיל את התוצאה הרצוייה. (לדוגמה float אם יש צורך במספרים לא שלמים).

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...