ABA


"c - בקשר ללולאה בלתי מוגבל וקליטת תו לסופה."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21227 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21227
faruz_avi 
חבר מתאריך 27.10.04
11552 הודעות
   22:14   03.05.15   
אל הפורום  
  c - בקשר ללולאה בלתי מוגבל וקליטת תו לסופה.  
 
   אני צריך לבנות תוכנית שעושה חישוב מסוים באופן בלתי מוגבל(לולאה) אבל שאני רוצה לסיים אני קולט תו(d). הכל טוב ויפה.

איך אני עושה את זה? כל עוד(התו אינו d)
איפה בדיוק אני מכניס את הקליטת תו אם כל פעם מחדש אני לא קולט שום תו חוץ מבסוף?


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  משהו כזה ShocKi  03.05.15 22:23 1
     וכל עוד אני קולט מספרים נגיד הוא פשוט מדלג על פקודת הקלט של התו? faruz_avi  03.05.15 22:34 2
         אם אתה מתכוון למשהו כזה ShocKi  03.05.15 22:42 3
             יש כל פעם פקודת קלט אחת של מספר...עד להופעת התו d שכאן נגמרת התוכנית faruz_avi  03.05.15 22:44 4
                 למדת על switch case? ShocKi  03.05.15 22:49 5
                     כן... faruz_avi  03.05.15 22:53 6
                         זה לא מדלג על כלום. ShocKi  03.05.15 22:57 7
                             אני אנסה את זה...תודה רבה אחי faruz_avi  03.05.15 23:02 8

       
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   22:23   03.05.15   
אל הפורום  
  1. משהו כזה  
בתגובה להודעה מספר 0
 
  

while ( 1 )
{
//do what ever you want to do
scanf("%c",&x);
if ( x == 'd')
break;
}
return 0;


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
faruz_avi 
חבר מתאריך 27.10.04
11552 הודעות
   22:34   03.05.15   
אל הפורום  
  2. וכל עוד אני קולט מספרים נגיד הוא פשוט מדלג על פקודת הקלט של התו?  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   22:42   03.05.15   
אל הפורום  
  3. אם אתה מתכוון למשהו כזה  
בתגובה להודעה מספר 2
 
  

while ( 1 )
{
scanf("%d",&num);
scanf("%c",&x);
if ( x == 'd')
break;
}
return 0;

אז התשובה היא לא, כדי ששיטה כזאת תעבוד אתה צריך שהקלט יגיע בדיוק בצורה שאתה רוצה. כי אם קיבלת את התו d ראשון אז הוא ייכנס ל num ואז התנאי לא יעבוד.

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

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


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
faruz_avi 
חבר מתאריך 27.10.04
11552 הודעות
   22:44   03.05.15   
אל הפורום  
  4. יש כל פעם פקודת קלט אחת של מספר...עד להופעת התו d שכאן נגמרת התוכנית  
בתגובה להודעה מספר 3
 
   כל עוד זה מספרים אני בודק רק הפרשים בינהם וזה...
איך case פותר את הבעיה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   22:49   03.05.15   
אל הפורום  
  5. למדת על switch case?  
בתגובה להודעה מספר 4
 
  


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
faruz_avi 
חבר מתאריך 27.10.04
11552 הודעות
   22:53   03.05.15   
אל הפורום  
  6. כן...  
בתגובה להודעה מספר 5
 
   למדתי רק עכשיו ממש וקצת קששה לי להבין איך זה ידלג על הקליטת תו שחייבת להופיע למקרה שאני רוצה לסיים את התוכנית


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   22:57   03.05.15   
אל הפורום  
  7. זה לא מדלג על כלום.  
בתגובה להודעה מספר 6
 
   יש לך פקודת קלט אחת.
את ה switch אתה כותב על המשתנה שקלטת.
ואז אתה פשוט עושה
case:'d'
ו:
default:


ה default זה לכל השאר.. (אני מניח שכל השאר זה רק מספרים)
אם יש דברים אחרים שאתה יכול לקבל כקלט למשל פתאום שמכניסים לך $ או U אז צריך לעשות עוד בדיקות.

http://www.tutorialspoint.com/cprogramming/switch_statement_in_c.htm

תכתוב את השלד של ה switch ואז נראה איפה אנחנו עומדים.


אני אסביר לך את הכיוון בכללי:
אתה מגדיר משתנה דגל שערכו שווה ל1.
אתה מריץ לולאת while(flag==1), ב case שאתה מקבל את התו d אתה תשנה את הערך של flagל 0 וככה זה יצא מהלולאה. בכל מקרה אחר זה יבצע את החישוב המספרי שאתה רוצה.


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
faruz_avi 
חבר מתאריך 27.10.04
11552 הודעות
   23:02   03.05.15   
אל הפורום  
  8. אני אנסה את זה...תודה רבה אחי  
בתגובה להודעה מספר 7
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net