פורסם 2010 במאי 1815 שנים בוקר טובאני צריך לקלוט מערך דו-מימדי (מטריצה) שהוגדר בתור # define NUMCOLUMNS 4# define NUMROWS 5int matrice[NUMROWS][NUMCOLUMNS]; הבעיה היא שהוא אמור לקלוט את האיברים למערך הדו-מימדי אם אני כותב אותם ככה:1 0 0 03 4 5 62 6 4 21 6 7 2וגם אם אני כותב אותם ככה:1 2 4 5 7 4 2 6 1 6 4 9 6 4 2 0ובכל מקרה אחר לכתוב שגיאהאיך עושים דבר כזה?
פורסם 2010 במאי 1815 שנים אני מניח שהכוונה היא שאם תקלוט בכל "מבנה" אחר, אז זה לא יעבוד? או שמותר לך לקלוט כל סדרה של מספרים, כל עוד יש בה בדיוק 20 מספרים?במקרה השני זה דווקא פשוט, באמצעות לולאה של scanf.במקרה הראשון זה קצת יותר מורכב, כי scanf לא ממש מבדיל בין סוף שורה ורווח. הפתרון בשביל זה הוא לקרוא כל שורה בנפרד באמצעות gets, ואז את השורה עצמה לנתח באמצעות sscanf.
פורסם 2010 במאי 1815 שנים מחבר עכשיו כשהעלת את זה אני חושב שהם התכוונו למקרה השני (בהתחלה חשבתי שהתכוונו רק לראשון שציינת) אני באמת אוודא את זה תמיד היו לי בעיות עם הבאפר בלולאה של SCANF, אני אמור לכתוב משהו בסגנון של: for (i=0; i<5;i++){ for (j=0; j<4;j++){ scanf("%d ", &matrice[i][j]);} } ותמיד בסוף יש בעיה אני מצרף את הדוגמאות שהביאו לנו: מוזר לי שבדוגמא השלישית השגיאה הגיעה רק אחרי שהוכנסו 4 תוים לא חוקיים ולא ישר אחרי הראשון.. אני כבר לא כל כך מבין איך הם רוצים שאני אבצע את הקלט .. כלומר, להכניס אותו לתוך CHAR ולתת תנאי על התחום לפי הטבלת ASCII ?
פורסם 2010 במאי 1815 שנים מוזר לי שבדוגמא השלישית השגיאה הגיעה רק אחרי שהוכנסו 4 תוים לא חוקיים ולא ישר אחרי הראשון..לא כזה מוזר, scanf לא מעבד את הקלט לכל מקש שמקלדת שאתה מקיש, אלא רק אחרי שאתה עושה enter.מה הבעיה בקוד שכתבת? (חוץ מזה שאין לך שום בדיקת של שגיאות)
פורסם 2010 במאי 1815 שנים מחבר שאני לא מבין איזה בדיקת קלט לעשות כלומר אם אני אכניס לו a במקום ספרה אז הוא יצא ישר מהתכנית, לא? איך אני גורם לו לכתוב ERROR לפני שהוא בורח?
פורסם 2010 במאי 1815 שנים אם תכניס משהו שאינו מספר, אז ה-scanf ייכשל. אתה יכול להשתמש בערך ההחזרה שלה בשביל לבדוק את זה. כיוון שהוא נכשל, ה-a עדיין יישאר בחוצץ של הקלט, ולכן כל שאר הקריאות ל-scanf גם ייכשלו.
פורסם 2010 במאי 1815 שנים מחבר "אתה יכול להשתמש בערך ההחזרה שלה בשביל לבדוק את זה" לא הבנתי את המשפט הזה
פורסם 2010 במאי 1815 שנים scanf היא פונקציה. היא מחזירה מספר, שממנו אתה צריך להבין אם היא הצליחה.http://www.cplusplus.com/reference/clibrary/cstdio/scanfקרא תחת return value.
פורסם 2010 במאי 1815 שנים מחבר מצטער לא הצלחתי להבין את הקשר מההסבר שםאפשר דוגמא או משהו כזה? זה רק חלק ראשון מתוך הבעיה, זה אפילו לא העיקר
פורסם 2010 במאי 1915 שנים מה לא ברור? scanf מחזירה את מספר האלמנטים שנקראו, או את הקבוע EOF אם היא נכשלה לחלוטין.נניח שעשית:res = scanf("%d", &x);אז הפונקציה הצליחה אם ורק אם res == 1.
פורסם 2010 במאי 1915 שנים מחבר לא ידעתי שאפשר לעשות דבר כזה.. עכשיו זה יותר ברורומה אני עושה כדי שזה יכתוב שגיאה אם הוכנסו יותר מ 20 ערכים?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.