פורסם 2010 בנובמבר 1115 שנים שלום רב,אשמח לעזרה בנושא שפת C - קיבלתי תרגיל לבנות תוכנה שאמורה לבצע:תקלוט התוכנית מספר שלם ותדפיס למסך האם מופיעה בו הספרה 5במידה והמספר הנקלט אינו שלם או שנקלטו תווים שאינם מהווים מספר (חישבו איך תוכלולבדוק זאת) יש להדפיס למשתמש הודעה מתאימה בשורה נפרדת ולהמתין לקלט חילופי.אין לי מושג איך להתחיל אפילו לכתוב את זה - מבני בקרה מותרים לשימוש - IF - ELSE - WHILE - FOR - DO.WHILE - WHITCHאפילו כיוון כללי יספיק לי...תודה מראש,
פורסם 2010 בנובמבר 1115 שנים כיוון כללי:קלוט מחרוזת.תבדוק אם יש בה תווים שאינם ספרות באמצעות לולאה .תבדוק אם יש בא את הספרה 5 באמצעות לולאה.תוציא פלטשים לב שניתן לשלב לולאות.
פורסם 2010 בנובמבר 1115 שנים מחבר אני יודע לעבוד עם לולאות אבל מה שאני לא יודע זה איך לגשת לכל סיפרה במספר שיוכנס ולבדוק האם הוא 5...למשל יש את המספר 154847איך אני יודע שהסיפרה שמייצגת את העשרות אלפים היא 5? איך לוקחים כל סיפרה בנפרד?
פורסם 2010 בנובמבר 1115 שנים חפש קצת בגוגל על פירוק מספר לספרות. זו אחת השאלות הנפוצות.אם למדת על מחרוזות, אז אתה יכול בכלל לוותר על ה"מספר" - פשוט קרא אותו כמחרוזת, ואז הוא כבר יהיה מפורק לך לספרות.
פורסם 2010 בנובמבר 1115 שנים #include <iostream>using namespace std;int main(){ char n[64] = {0}; cin >> n; bool five_exist = false; bool dot_exist = false; for(unsigned int i = 0;i < strlen(n);i++) { if(n[i] < '0' || n[i] > '9') if(n[i] == '.') { if(dot_exist == true) { cout << n << " is not a valid number" << endl; return 0; } dot_exist = true; } else { cout << n << " is not a valid number" << endl; return 0; } if(n[i] == '5') five_exist = true; } if(five_exist) cout << n << " contain 5" << endl; if(dot_exist) cout << n << " is not an integer" << endl;}הנה,פשוט תעבור בלולאה על המספר,אם הוא מכיל יותר מנקודה אחת הוא לא מספר תקין,אם הוא מכיל נקודה אחת אז הוא לא מספר שלם,אם הוא מכיל 5 אז תדפיס שיש 5
פורסם 2010 בנובמבר 1115 שנים סבבה, אבל:א. הקוד שלך הוא קוד ++C, לא C.ב. יש פה שימוש במחרוזות, שאני לא בטוח אם פותח הת'רד למד עליהן עדיין...
פורסם 2010 בנובמבר 1115 שנים מחבר סבבה, אבל:א. הקוד שלך הוא קוד ++C, לא C.ב. יש פה שימוש במחרוזות, שאני לא בטוח אם פותח הת'רד למד עליהן עדיין...א. ++C אנחנו לא לומדים - למדים רק פקודות בC ורק פקודות הנכללות בstdio.hב. לא למדנו מה זה מחרוזת אבל - אמרו לנו משהו על זה שאפשר לקלוט את המספר בצורה מהסוגscanf("%c",&num);זה מה שקרא מחרוזת?אם כן אז אשמח לדעת איך עובדים עם זה - אם למישהו יש קישור לאתר שמסביר את הנושא אשמח לקישור - אנגלית/עברית.תודה
פורסם 2010 בנובמבר 1115 שנים מחבר אז עוד אין לי מושג מה זה.....אבל איך אפשר לעבוד עם c% ??? - אמרו לנו שככה אמורים לבנות את זה - בהתחשב בפקודות המותרות...
פורסם 2010 בנובמבר 1115 שנים באמצעות c% אתה יכול לקרוא כל פעם תו אחד מהקלט:char ch;while (blabla) { scanf("%c", &ch); /* do something with ch */}שים לב ש-ch הוא תו ולא מספר. הכוונה היא שאם הקלדת את המספר 5, אז ערכו של ch יהיה התו '5'.
פורסם 2010 בנובמבר 1215 שנים בגלל שעוד לא למדתם על מחרוזות (שזו באמת הדרך הכי פשוטה ומהירה לעשות את מה שאתה צריך ובחיים לא יתנו לך לעשות דבר כזה כי זה פשוט מדי) אתה צריך לעשות מניפולציה מפגרת על ה-BUFFER ואני אסביר.אני מקווה שלמדתם את הפקודה getchar. הפקודה הזאת קולטת תו בודד (כלומר 5 זה תו ו15 זה שני תווים). מה שאתה בעצם אמור לעשות זה לקלוט בלולאה תווים בעזרת getchar ותנאי היציאה (כניסה) מהלולאה יהיה הקשת התו אנטר כלומרwhile(c!='\')כאשר c הוא המשתנה שמקבל את הערך של התו ו- '\' זהו התו של מקש האנטר (נדמה לי, אתה יכול למצוא את זה בקלות בגוגל).הפקודה getchar מצפה לתו אחד וכאשר אתה מכניס כמה תווים ביחד אז רק הראשון נכנס למשתנה c והשאר נשמרים בbuffer. כל פעם שהלולאה תרוץ היא תקלוט את התו הבא מהbuffer עד שהתו יהיה אנטר ואז הלולאה תיפסק. אם אתה רוצה לוודא שאחד מהתווים הוא 5 אז תוסיף משתנה שייקבל ערך true (כלומר מה שבא לך. 1 או אפס או whatever) ואם התו הזה לא קיבל ערך true עד סוף הלולאה אז אתה יודע שהתו 5 לא נמצא שם.אני חושב שנתתי לך מספיק כדי שתוכל להמשיך הלאה. אין טעם שאני אגלה לך הכל כי אז לא תלמד מזה כלום. בהצלחה.
פורסם 2010 בנובמבר 1215 שנים while(c!='\')'\' זהו התו של מקש האנטר (נדמה לי, אתה יכול למצוא את זה בקלות בגוגל).התו של סוף שורה הוא 'n\'.
פורסם 2010 בנובמבר 1415 שנים מחבר תודה רבה לכולכם - אני חושב שהבנתי איך לעשות את זה - לא בטוחאנסה ואם יהיו בעיות אחזור לכאן...
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.