דרושה קצת עזרה בבעיה ב C++ - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

דרושה קצת עזרה בבעיה ב C++


BigTools

Recommended Posts

שלום לכם,

לאחרונה נקלתי בשאלה ב C++

שאין לי קצה של מושג, איך להתחיל אותה אפילו,

אני אשמח אם מישהו יוכל להציג לי כאן פתרון, או לפחות הסבר מה צריך לעשות כאן?

כתוב תכנית שקולטת אוסף של תווים שמופיע בסדר הבא:

סדרת של ספרות, נקודה עשרונית, סדרה של ספרות סוף סדרה '*' .

התוכנית בונה מאותו אוסף מספר מסוג ממשי המורכב מאותן ספרות שנקלטו.

במידה וקלט לא תקין יש להדפיס הודעה.

הערה: חובה לבדוק תקינות קלט (התווים הם רק ספרות או נקודה)

דוגמא בעבור הקלט התוים 423.52

הפלט מספר ממשי 423.52

תודה רבה.

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

לקרוא תווים בודדים מהקלט אתה יודע?

לקרוא תו (char) המייצג ספרה ולהמיר אותו למספר (int) בעל הערך הזה, אתה יודע?

תתחיל מתכנית יותר פשוטה, שקוראת רק את החלק הראשון (מה שעד הנקודה) ומכניסה אותו לתוך משתנה מסוג int.

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

אם בכוונה לממשי אתה מתכוון למספר ללא הגבלה על גודלו אזי לא תוכל להכניס אותו לתוך אף סוג בסיסי של C++

אם כך אז אתה צריך לשמור אותו בצורה סימבולית. האופן שבו תבחר יהיה תלוי בפעולות שאתה צריך לעשות על מספרים כאלו.

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

אם לעומת זאת אתה צריך משהו שכולל גם פעולות חשבוניות אז תצטרך משהו יותר מתקדם.

ולא, אין סיכוי שאני כותב לך את זה :)

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


int main()
{
char c;
char str[1024];
str[0] = '\0';
scanf("%c", &c);
while (c != '*')
{
sprintf(str, "%s%c", str, c);
scanf("%c", &c);
}
printf("%s", str);
printf("%f", atof(str));
return (0);
}

אוקי אז הבנתי, לפי השאלה בסוף המחרוזת יש '*'

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

רק למה הוא מדפיס בן כל תו /n ?

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

הקוד נראה סבבה (למרות שהייתי מעדיף להימנע מ-sprintf, זה סתם מיותר). לא כל כך הבנתי מה הבעיה שלך בדיוק (מה הקלט לתכנית, ומה בדיוק היא מדפיסה?)

נ.ב. למה אתה עושה return 1? נהוג להחזיר 0.

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

הקלט הוא מחרוזת של תווים. נכנסים למערך,

הפלט הוא מספר ממשי, החזרתי גם 1 כי אני מתעצל לשנות ל VOID.

בכל אופן, במקום להדפיס 334.55 נניח. ההדפסה היא 5_5_._4_3_3 (כש-'_' = רווח)

המ, איך אני פותר את זה, ואיך אני יוכל להמנע משימוש ב sprintf?

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

ארכיון

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

×
  • צור חדש...