פורסם 2014 בינואר 111 שנים אני אמור לרשום פונקציה שמקבלת מספר מסויים בין כמה ספרות ועוד ספרה בודדת ולהחזיר מספר שמורכב מכל הספרות מהמספר המקורי שגדולות או שוות לספרה לדוגמא:אני מקבל את המספר 12345 ואת הספר 3 אז הפונקציה תחזיר 345.זה מה שכתבתי: public static int filter(int num, int d) { int[] arr = new int[howManyDigits(num)]; return filter(num, d, arr, 0); } private static int filter(int num, int d, int[] arr, int i) { if (num == 0) return 0; int digit = num % 10; int res = num / 10; if (digit >= d) { arr[i] = digit; return filter(res, d, arr, i + 1) + digit; } else return filter(res, d, arr, i + 1); }מה שקורה פה זה שאני מחזיר את סכום הספרות ולא את המספר אז העברתי מערך שמחזיק את כל הספרות הרלונטיות אבל אני לא יודע איך להציג אותו ככה שזה יציג את המספר.אגב הפונקציה howManyDigits שכתובה בתחילת הפונציה פשוט מחשבת כמה ספרות המספר מכיל ומאתחלת את המערך למספר הזה עלמנת שיהיה מספיק מקום במערך, היא כתובה גם כן בתור רקורסיה אבל לא כללתי את הקוד שלה פה.
פורסם 2014 בינואר 111 שנים אם יש לך את הספרות (לפי הסדר), פשוט כפול כל אחת מהן בעשר בחזקת המקום במערך (החל מאפס, מהסוף להתחלה) ותסכום.
פורסם 2014 בינואר 111 שנים אז תחשוב איך להתמודד עם זה. (או לחילופין, תיפטר לחלוטין מהמערך כי הוא לא נחוץ).
פורסם 2014 בינואר 111 שנים תגדיר משתנה עזר, וכל פעם שהספרה שאתה בודק עבור המספר המקורי עומדת בתנאי, תכפול את משתנה העזר ב10 ותוסיף לו את הספרה החדשה.
פורסם 2014 בינואר 111 שנים מחבר הצלחתי בסופו של דבר, כל פעם שהייתה ספרה רלוונטית פשוט כפלתי אותה בעשר בחזקת המיקום והחזרתי את המשתנ שסוכם את זה
פורסם 2014 בינואר 111 שנים int filter(int n, int d) { if (n == 0) return 0; if (n%10 >= d) { return filter(n/10,d)*10 + d; } else { return filter(n/10, d); }}
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.