תרגיל ב-C עם EOF - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תרגיל ב-C עם EOF


iem

Recommended Posts

נתונה השאלה המצ"ב.

חשבתי על האלגוריתם הבא:

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

השאלה איך סוכמים הכל לשורת סיום ?

אשמח להצעת אלגוריתם יעיל יותר...

תודה !! ???

[attachment deleted by admin]

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

כן, למעט הקריאה הראשונה (של שער הדולר) שצריכה להתבצע לפני הלולאה

לא כ"כ הבנתי...

אני שם את כל התוכנית מלבד השורה האחרונה בתנאי EOF ואת הקריאה הראשונה מחוץ ללולאה שתהיה תחת ה- WHILE אבל עדיין גם השורה הראשונה תחת תנאי ה- EOF נכון ? :s05:

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

כתבתי את התוכנית הבאה:


#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]

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

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

[attachment deleted by admin]

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

#

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);

מבחינתו... :nixweiss:

[attachment deleted by admin]

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

#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 בסוף.

מה הפונק' האלו נותנות ואיפה אני מוסיף אותן ?

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

השינוי הזה עבד?

לגבי השאלה שלך: קרא כאן את החלק שמדבר על flushall.

ההבדל בין flushall ו-fflush הוא ש-flushall מרוקן את החוצצים של כל הקבצים הפתוחים כרגע (הקלט והפלט הסטנדרטיים נחשבים "קבצים") ו-fflush מקבל קובץ ספציפי לרוקן.

בשביל להיות בטוח שהכל מודפס למסך, תשים קריאה לאחת מהן בסוף התכנית (לפני ה-return 0 כמובן). אם flushall לא עובד אז תנסה flushall_.

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

ארכיון

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

×
  • צור חדש...