פורסם 2014 ביולי 1011 שנים שלום, אני אשמח אם מישהו יוכל לעזור לי ( כבר שברתי את הראש שעות על זה ) אני רוצה לכתוב תוכנית שהמשתמש מכניס מספר ורק בעזרת לולאות (ללא מערכים וללא מחסניות) לרשום כפלט את כל המספרים השונים זה מזה וכמה פעמים הם מופיעים .... לדוגמא: המספר 12340001 הפלט יהיה : 1 - מופיע 2 2 - מופיע 1 3 - מופיע 1 4 - מופיע 1 0 - מופיע 3 תודה מראש לעוזרים.
פורסם 2014 ביולי 1011 שנים מחבר הבעיה היא לא לספור כמה פעמים הספרה מופיעה אלא לרשום את הספרה שאני רוצה לספור רק פעם אחת ...(כמו בדוגמא ש 1 מופיע פעמיים אז היא לא כתובה פעמיים בפלט).
פורסם 2014 ביולי 1011 שנים מחבר כן רשמתי בהודעה הראשונה... הכיוון שאני חשבתי זה לקחת את המספר כסטרינג ולעבור בשתי לולאות FOR שאחת תרוץ ותבדוק אם המספר האחרון שווה לאחד המספרים בהמשך . אם כן שלא ירשום אותו ואם לא אז שירשום אותו.... ובלולאה השניה פשוט תתבצע הספירה במשתנה COUNTER. הבעיה היא שתמיד שאני רץ המספר יש כמה ספרות שונות ולכן הוא רושם לי את המספר כמה פעמים .... ואסור לשכפל מספר.... הדרך השניה שחשבתי זה בתפריט סוויטש ... אבל זה ממש מגושם ולא נראה לי שזאת הכוונה בתרגיל - - - תגובה אוחדה: - - - public class try1 { public static void main(String[] args) { int num = 1000001; int temp; int counter0 = 0; int counter1 = 0; int counter2 = 0; int counter3 = 0; int counter4 = 0; int counter5 = 0; int counter6 = 0; int counter7 = 0; int counter8 = 0; int counter9 = 0; while (num > 0) { temp = num % 10; switch (temp) { case (0): counter0++; break; case (1):counter1++; break; case (2):counter2++; break; case (3):counter3++; break; case (4):counter4++; break; case (5):counter5++; break; case (6):counter6++; break; case (7):counter7++; break; case (8):counter8++; break; case (9):counter9++; break; } num /= 10; } if (counter0 > 0) System.out.println("the number '0' " + " " + counter0 + " times"); if (counter1 > 0) System.out.println("the number '1' " + " " + counter1 + " times"); if (counter2 > 0) System.out.println("the number '2' " + " " + counter2 + " times"); if (counter3 > 0) System.out.println("the number '3' " + " " + counter3 + " times"); if (counter4 > 0) System.out.println("the number '4' " + " " + counter4 + " times"); if (counter5 > 0) System.out.println("the number '5' " + " " + counter5 + " times"); if (counter6 > 0) System.out.println("the number '6' " + " " + counter6 + " times"); if (counter7 > 0) System.out.println("the number '7' " + " " + counter7 + " times"); if (counter8 > 0) System.out.println("the number '8' " + " " + counter8 + " times"); if (counter9 > 0) System.out.println("the number '9' " + " " + counter9 + " times"); } זה מה שחשבתי.... לא נראה לי שזאת כוונת המשורר.... אבל זה עובד חחחחחח
פורסם 2014 ביולי 1011 שנים כשאתה כותב קוד תשתמש בטג קוד (צריך להשתמש במצב מתקדם בשביל זה) כדי שיהיה יותר קריא.השיטה שלך היא יחסית בסדר, כאמור היא לא יפה במיוחד כי היא דורשת משתנה עבור כל ספרה, אבל ככה זה כשאתה לא יכול להשתמש במערכים.תחשוב איך אתה עושה את זה ע"י שימוש במשתנה counter אחד בלבד, אבל עם עוד לולאה (דהיינו האלגוריתם יהיה פחות יעיל).
פורסם 2014 ביולי 1011 שנים מחבר אני הכוונתי לעשות לולאת FOR שתצור את כל משתני COUNTER השונים ולולאה נוספת שתדפיס אותם...לזה התכוונת ?
פורסם 2014 ביולי 1011 שנים אי אפשר לעשות כזה דבר - לולאה שיוצרת משתנים. משתנים הם hard coded, לא נוצרים דינמית. הדרך היחידה ליצור "משתנים" בצורה דינמית היא באמצעות מערך.
פורסם 2014 ביולי 1411 שנים אם הבנתי נכון : שתי לולאות (רמז: מקוננת ) .שמות משתנים , שמשתנים תו"כ זמן הריצה .מספיק - תחשוב !
פורסם 2014 באוגוסט 1711 שנים הפתרון שלך בסדר גמור למקרה ספציפי שתחום הערכים שלך לא גדול מדי (10 ערכים 0 עד 9). הפתרון הפחות יעיל יהיה נכון לכל תחום ערכים (מעל כל א"ב). הלולאה החיצונית מבצעת איטרציה על הערכים שאת כמות המופעים שלהם אתה מחפש לספור, (במקרה זה 0 עד 9). אז מה נותר בעצם לעשות עם לולאה פנימית? מה תעשה בלולאה החיצונית לאחר שהפנימית סיימה, ולפני שאתה עובר לאיטרציה הבאה בחיצונית?
פורסם 2014 באוגוסט 1811 שנים מבין לגמרי, ואמנם התשובה נוסחה ככזו שפונה לשואל אבל אנשים אחרים עוד יקראו את השרשור וההכוונה הנוספת מיועדת בעיקר עבורם.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.