עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

תרגיל ב-C עם EOF

Featured Replies

פורסם

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

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

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

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

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

תודה !! ???

[attachment deleted by admin]

פורסם

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

כשתגיע ל-EOF, תדפיס את ערכו של המשתנה הזה (בש"ח ובדולרים).

פורסם
  • מחבר

וזה נכון שכל התוכנית קיימת בעצם על תנאי WHILE אחד גדול ? ???

פורסם

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

פורסם
  • מחבר

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

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

אני שם את כל התוכנית מלבד השורה האחרונה בתנאי 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]

פורסם

double קוראים באמצעות lf%, לא באמצעות f%. אני לא יודע אם זה מה שגורם לבעיה, אבל צריך לתקן את זה.

פורסם
  • מחבר

שיניתי, והכנסתי לו את הקלט של הדוגמא בתרגיל, אבל הוא כאילו מגיב חלקית, כלומר הוא נותן פלט שההתחלה שלו נכונה אבל איפשהו הוא מאבד את עצמו ולא עליתי על הבעיה... :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]

פורסם

תנסה להוסיף ירידת שורה גם בהדפסה האחרונה, ואם זה לא עובד אז תוסיף קריאה ל-()flushall או (fflush(stdout בסוף.

אגב, תחליף את main ב-int main, ותוסיף return 0 בסוף.

פורסם
  • מחבר

#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_.

פורסם
  • מחבר

השינוי נתן את אותה תוצאה ממקודם, וניסיתי גם fflush(stdout) וגם flushall()

וזה לא שינה את התוצאה...

זה נותן לי הכל מלבד השורה האחרונה... :-\ :nixweiss:

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.