פורסם 2009 בנובמבר 1816 שנים נתונה השאלה המצ"ב.חשבתי על האלגוריתם הבא:כל התוכנית היא בתנאי של EOF כאשר תחת התנאי יש מספר ראשון נכנס כפרמטר שער הדולר וכל השאר מוכנסים ללולאה של FOR עם שורת printf שתציג בפורמט המבוקש.השאלה איך סוכמים הכל לשורת סיום ?אשמח להצעת אלגוריתם יעיל יותר...תודה !! ???[attachment deleted by admin]
פורסם 2009 בנובמבר 1816 שנים תחזיק עוד משתנה שלתוכו תכניס את הסכום (הסכום הזה כמובן יגדל בכל איטרציה).כשתגיע ל-EOF, תדפיס את ערכו של המשתנה הזה (בש"ח ובדולרים).
פורסם 2009 בנובמבר 1916 שנים כן, למעט הקריאה הראשונה (של שער הדולר) שצריכה להתבצע לפני הלולאה, וההדפסה האחרונה (של הסכום) שצריכה להתבצע כשה-while יסתיים.
פורסם 2009 בנובמבר 2016 שנים מחבר כן, למעט הקריאה הראשונה (של שער הדולר) שצריכה להתבצע לפני הלולאהלא כ"כ הבנתי...אני שם את כל התוכנית מלבד השורה האחרונה בתנאי EOF ואת הקריאה הראשונה מחוץ ללולאה שתהיה תחת ה- WHILE אבל עדיין גם השורה הראשונה תחת תנאי ה- EOF נכון ? :s05:
פורסם 2009 בנובמבר 2016 שנים מחבר כתבתי את התוכנית הבאה:#include <stdio.h>main(){double CurrDoll=0;double DollRate; double SumDoll=0;printf("Please enter list of numbers");scanf("%f",&DollRate);printf("\n $ \t\t\t IS \n");printf("-- \t\t\t -- \n");while ( (scanf("%f",&CurrDoll) ) != EOF ){ SumDoll+=CurrDoll; printf("%f \t\t\t %f",CurrDoll,CurrDoll*DollRate);}printf("%f \t\t\t %f",SumDoll,SumDoll*DollRate);}וקיבלתי את מה שרואים בקובץ תמונה המצ"ב..יש לציין כי לא עשיתי בשום שלב CTRL + D, אלא רק הכנסתי שורה עם מספרים כאשר יש ביניהם מספרים ובסוף לחצתי ENTER וזה מה שהוא נתן.למה זה לא הלך לי ? :-[[attachment deleted by admin]
פורסם 2009 בנובמבר 2016 שנים double קוראים באמצעות lf%, לא באמצעות f%. אני לא יודע אם זה מה שגורם לבעיה, אבל צריך לתקן את זה.
פורסם 2009 בנובמבר 2016 שנים מחבר שיניתי, והכנסתי לו את הקלט של הדוגמא בתרגיל, אבל הוא כאילו מגיב חלקית, כלומר הוא נותן פלט שההתחלה שלו נכונה אבל איפשהו הוא מאבד את עצמו ולא עליתי על הבעיה... [attachment deleted by admin]
פורסם 2009 בנובמבר 2016 שנים מחבר # include <stdio.h>main(){double CurrDoll=0;double DollRate; double SumDoll=0;printf("Please enter list of numbers");scanf("%lf",&DollRate);printf("\n$ \t\t\t\t IS \n");printf("-- \t\t\t\t -- \n");while ( (scanf("%lf",&CurrDoll) ) != EOF ){ SumDoll+=CurrDoll; printf("%lf \t\t\t %lf\n",CurrDoll,CurrDoll*DollRate);}printf("%lf \t\t\t %lf",SumDoll,SumDoll*DollRate);} כבר יש לי התקדמות אבל עדיין אני לא מבין למה הוא כאילו לא מתייחס לשורה האחרונה של הסכום בדולרים שאמור להיות מול הסכום בשקלים.. כאילו לא קיימת השורה: printf("%lf \t\t\t %lf",SumDoll,SumDoll*DollRate); מבחינתו... [attachment deleted by admin]
פורסם 2009 בנובמבר 2016 שנים תנסה להוסיף ירידת שורה גם בהדפסה האחרונה, ואם זה לא עובד אז תוסיף קריאה ל-()flushall או (fflush(stdout בסוף.אגב, תחליף את main ב-int main, ותוסיף return 0 בסוף.
פורסם 2009 בנובמבר 2016 שנים מחבר #include <stdio.h>int main(){double CurrDoll=0;double DollRate; double SumDoll=0;printf("Please enter list of numbers");scanf("%lf",&DollRate);printf("\n$ \t\t\t\t IS \n");printf("-- \t\t\t\t -- \n");while ( (scanf("%lf",&CurrDoll) ) != EOF ){ SumDoll+=CurrDoll; printf("%lf \t\t\t %lf\n",CurrDoll,CurrDoll*DollRate);}printf("%lf \t\t\t %lf\n",SumDoll,SumDoll*DollRate);return 0;}שיניתי אבל לא הבנתי מה הכוונה ב:ואם זה לא עובד אז תוסיף קריאה ל-()flushall או (fflush(stdout בסוף.מה הפונק' האלו נותנות ואיפה אני מוסיף אותן ?
פורסם 2009 בנובמבר 2016 שנים השינוי הזה עבד?לגבי השאלה שלך: קרא כאן את החלק שמדבר על flushall.ההבדל בין flushall ו-fflush הוא ש-flushall מרוקן את החוצצים של כל הקבצים הפתוחים כרגע (הקלט והפלט הסטנדרטיים נחשבים "קבצים") ו-fflush מקבל קובץ ספציפי לרוקן.בשביל להיות בטוח שהכל מודפס למסך, תשים קריאה לאחת מהן בסוף התכנית (לפני ה-return 0 כמובן). אם flushall לא עובד אז תנסה flushall_.
פורסם 2009 בנובמבר 2016 שנים מחבר השינוי נתן את אותה תוצאה ממקודם, וניסיתי גם fflush(stdout) וגם flushall() וזה לא שינה את התוצאה... זה נותן לי הכל מלבד השורה האחרונה... :-\
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.