פורסם 2008 בדצמבר 2716 שנים מחבר כי בקוד הקודם הוא קיבל תוצאה של pow, אז הכרזתי עליו כדאבל.אבל זה כזה משמעותי?
פורסם 2008 בדצמבר 2716 שנים כן, שים לב איך אתה מנסה להדפיס אותו.אם אתה רוצה להדפיס d%, אתה חייב לתת לו int (או שמראש b10 יהיה int, או שתמיר אותו לפני ההדפסה).
פורסם 2008 בדצמבר 2816 שנים מחבר תודה שניצל, זה אכן פתר את הבעיה. ועוד בעיה שיש לי (אחרונה בהחלט, אני בטוח שלכולכם כבר נמאס ממני).היא שהקומפיילר עושה עיגול כלפי מטה של חילוק בין שני שלמים למספר שלם, למרות שאני שומר אותו כדאבל. 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. הפונקציה מחשבת את ממוצע המספרים שנקלטו שגדולים מהמספר הראשון שנקלט.עבור הקלט:8910999הפונקציה מדפיסה:9.00000במקום 9.50000למה העיגול?
פורסם 2008 בדצמבר 2916 שנים מחבר אכן עובד. תודה לך ידידי.זה מוזר, הרי חילוק ע"י / אמור לתת לפעמים תוצאה לא שלמה לא?
פורסם 2008 בדצמבר 2916 שנים זה תלוי מהו סוג המשתנים שאתה מחלק, התוצאה תמיד תהיה מסוג המשתנה הגדול יותר.לדוגמה חילוק של char בint יתן int, או חילוק של float בint יתן float.הדרך הפשוטה לתקן את זה היא כמו שהראו לך מיקודם - לבצע Casting לסוג משתנה שכן יכול להכיל את התוצאה הרצוייה. (לדוגמה float אם יש צורך במספרים לא שלמים).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.