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

הכנסת מחרוזת למשתנה float ב C++


א

Recommended Posts

מצורף הקוד.

למשל כשאני מכניס מספר שלילי או לא שלם הלולאה מגיבה טובה, ומדפיסה שוב להכניס מספר וקולטת בהתאם. כשאני מכניס מחרוזת, זה מדפיס לי אינסוף פעמים enter a number, מבלי לחכות לקלט. כאילו שזה מדלג על ה cin. מה הבעיה פה?

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

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

אתה צריך לבדוק את הערך של ()cin.fail כדי לדעת אם הקריאה האחרונה הצליחה (יש עוד כמה דברים שצריך לבדוק אבל הם לא רלוונטיים כאן). אם היא לא הצליחה אז אתה צריך לאפס את הסטטוס באמצעות ()cin.clear ואז לדלג על הדבר האחרון שהמשתמש הכניס, לדוגמה באמצעות קריאה לתוך אובייקט string זמני.

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

ב-C משתמשים ב-scanf, שמחזירה כמה משתנים היא הצליחה לקרוא בהצלחה. אם לדוגמה היא הייתה אמורה לקרוא מספר אחד והצליחה אז היא תחזיר 1, אחרת היא תחזיר 0. בשביל לדלג על התווים הבעיתיים אפשר לעשות כזה דבר:


scanf("%*s");

ה-s% אומר לקרוא מחרוזת, אבל ה-* אומר להתעלם ממנה ולא לשמור אותה בשום משתנה.

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

ארכיון

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

×
  • צור חדש...