עבור לתוכן

עזרה בבדיקת קלט.| וגם שאלה על פונקציית scanf.

Featured Replies

פורסם

שלום,

אני צריך לצרף בדיקת קלט לתכנית האמורה לקבל מספרים שלמים בלבד.

צירפתי בדיקת קלט בדיוק כפי שהופיע בהנחיות.

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

(אם המספר הראשון שאני מכניס הוא ממשי הוא כן מודיע על כך.)

היכן שוכנת הבעיה?

[attachment deleted by admin]

פורסם

scanf קורא עד שהוא נתקל בתו שלא מתאים למה שאתה מנסה לקרוא כרגע.

כלומר, אם אתה מנסה לקרוא את הקלט "123.45" בתור מספר שלם (d%) אז הוא יעצור ברגע שהוא יגיע לנקודה.

אם הקלט הוא כזה:

123 456.78

אז בהתחלה הוא יקרא את 123 בהצלחה, ואחר כך הוא יקרא את 456 וייעצר בנקודה.

אם הקלט הוא כזה:

456.78 123

אז המספר הראשון שהוא יקרא יהיה 456, והוא ייעצר בנקודה. אחר כך הוא שוב ינסה להמשיך לקרוא מהנקודה, ולא יצליח.

פורסם
  • מחבר

אז אתה אומר שבדיקת הקלט שלי היא תקינה? (כי כאשר משתמש יכניס כקלט המספר השני מספר ממשי הוא ייקבל תוצאה לא בדיוק נכונה.)

פורסם

זה כבר תלוי בדרישות של התכנית.

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

פורסם
  • מחבר

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

פורסם
  • מחבר

בהמשך לבדיקת הקלט, הייתי רוצה לדעת באופן כללי מה מחזירה הפונקצייה scanf, כלומר מה היא מחזירה במקרה הזה למשתנה number,

וכמו כן כיצד זה מתקשר לבדיקת הקלט.

[attachment deleted by admin]

פורסם
  • מחבר

אוקיי, הערך המוחזר הוא מס' הערכים שנקלטו בהצלחה, השאלה היא מה בדיוק מוגדר כקליטה מוצלחת?

פורסם

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

scanf("%d %d", ...)

פורסם

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

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

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

ארכיון

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

דיונים חדשים