moo2004 פורסם 2006 בדצמבר 7 Share פורסם 2006 בדצמבר 7 היי,רק התחלתי ללמוד עכשיו #C וכתבתי משהו קטן שמייצר 20 תרגילים רנדומלים במתמטיקה וסופר על כמה תרגילים המשתמש ענה נכון.אני רוצה להדפיס הודעה למסך (ב Console השחור) עם טקסט למשתמש.ההודעה תשתנה עפ"י מספר התשובות הנכונות.הודעה אחת תופיע כאשר משתמש ענה על יותר מ 15 תרגילים נכון,הודעה אחרת תופיע כאשר משתמש ענה על יותר מ 10 תרגילים נכון, אבל על פחות מ 15,הודעה אחרת תופיע כאשר משתמש ענה על יותר מ 5 תרגילים נכון, אבל על פחות מ 10וכן הלאה...איך אני יכול לעשות את זה עם Switch ולא עם משפט IF בתוך IF? :s05: קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2006 בדצמבר 7 Share פורסם 2006 בדצמבר 7 קודם כל, לא צריך if בתוך if, אלא פשוט להשתמש ב-else if, כלומר משהו בסגנון:string msg;if (n > 15) { msg = "some message";} else if (n > 10) { msg = "some other message";} else if (n > 5) { // ... and so on}והאמת היא שזה הפתרון המומלץ.לגבי switch - הוא יודע לטפל רק בערכים קבועים, ולא בטווחים של ערכים. לכן יש לך שני פתרונות אפשריים.אופציה אחת, די חורנית ולא מומלצת, היא פשוט להחזיק switch עם 21 אפשרויות שונות (מ-0 עד 20).אופציה שנייה היא לעשות switch על n/4, ואז מספר האופציות יצטמצם לך ל-5 (0 עד 4).בכל מקרה, עדיף להשתמש ב-if. ב-switch משתמשים רק אם באמת יש לך רשימה קבועה של ערכים אפשריים (בד"כ ב-enum-ים). קישור לתוכן שתף באתרים אחרים More sharing options...
D.Man פורסם 2006 בדצמבר 7 Share פורסם 2006 בדצמבר 7 לגבי הSWITCH אם אני לא טועה אתה יכול להשתמש ב:switch(..){case (A>15){}case (A>10){}..... קישור לתוכן שתף באתרים אחרים More sharing options...
Holy פורסם 2006 בדצמבר 7 Share פורסם 2006 בדצמבר 7 אתה טועה קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בדצמבר 7 Share פורסם 2006 בדצמבר 7 בVB אתה יכול לעשות ככה. בC# לא. קישור לתוכן שתף באתרים אחרים More sharing options...
Omerole פורסם 2006 בדצמבר 8 Share פורסם 2006 בדצמבר 8 שניצל,לא צריך לעשות גם else if (n>10) && (n<15) למשל? קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בדצמבר 8 Share פורסם 2006 בדצמבר 8 אם הוא יכנס לראשון אז הערך גדול מ-15. אם הוא לא יכנס לראשון, אז מובטח שהערך קטן מ-15 והוא יבדוק את התנאי שבא אחרי ה- else. לא צריך לבדוק אם זה קטן מ-15.שים לב שאם היית רוצה לרשום את התנאי עם הקטן מ-15 היית צריך להוסיף שווה.ד.א חסרים לך סוגריים. קישור לתוכן שתף באתרים אחרים More sharing options...
moo2004 פורסם 2006 בדצמבר 10 מחבר Share פורסם 2006 בדצמבר 10 באמת אין אפשרות ש Case תגדיר טווח של ערכים. כל Case צריך להיות לערך אחד...עשיתי את זה בסוף עם:If .....else if...אם רוצים לעשות משהו דומה עם Switch צריך לעשות את זה כך:switch (x)case 20:case 19:case 18:case 17: Console.writeln("Bla Bla");break;מה שיקרה זה שאם הערך של CX יהיה 19 למשל (או 20 או 18) יתבצע ה case הראשון שכתובות בו הוראות לביצוע...כמו שכבר אמרו לפני, זו דרך "ערבית" לעשות את זה. קישור לתוכן שתף באתרים אחרים More sharing options...
Zelig פורסם 2006 בדצמבר 10 Share פורסם 2006 בדצמבר 10 עוד אופציה שלפעמים עדיפה אם יש לך לא מעט ערכים היא להשתמש ברשימה (== מערך או כל דבר אחר) של טווחים:הנה פסאודוקוד בסיסיranges[] = { 0, 10, 15, 20, 100, 200, 256 };int range = 0;while (val < ranges[range+1]) AND (val >= ranges[range]) DO range = range+1; קישור לתוכן שתף באתרים אחרים More sharing options...
moo2004 פורסם 2006 בדצמבר 11 מחבר Share פורסם 2006 בדצמבר 11 עוד לא למדתי מערכים... קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.