Judas Iscariot פורסם 2006 באוקטובר 27 Share פורסם 2006 באוקטובר 27 קיבלתי את התרגיל הבא לשיעורי בית במדעי המחשב(פסקל): "כתוב תוכנית הקולטת מספר טבעי כלשהו, שאינו כולל אפסים. על התוכנית ליצור שני מספרים חדשים, מהמספר שנקלט, ולחשב את סכומם. מספר אחד נוצר ע"י כתיבת כל הספרות הזוגיות, המופיעות במספר, ע"פ סדר הופעתן, והמספר השני נוצר ע"י כל הספרות האי - זוגיות, המופיעות במספר ע"פ סדר הופעתן. דוגמא: אם המספר הוא 3421765, אזי שני המספרים הם: 3175 ו426 וסכומם הוא 3601." תודה מראש לעוזרים קישור לתוכן שתף באתרים אחרים More sharing options...
k-o-b-y פורסם 2006 באוקטובר 27 Share פורסם 2006 באוקטובר 27 אתה יודע להפריד ספרות במספר (משהו פשוט שמלמדים בדר"כ)?הפתרון הוא לקחת כל ספרה, לבדוק לאיזה מספר היא מתאימה (לזה של הזוגיים או לזה של האיזוגיים) ולהוסיף אותה בצד השמאלי של המספר המתאים. קישור לתוכן שתף באתרים אחרים More sharing options...
Judas Iscariot פורסם 2006 באוקטובר 27 מחבר Share פורסם 2006 באוקטובר 27 שמדובר במספר ספרות מוגדר מראש אני יודע להפריד, אבל פה אינני יודע את מספר הספרות.אני יודע איך אני יכול לספור כמה ספרות יש במספר אבל אח"כ אני לא יודע איך להפריד אותן... ואיך בדיוק אני "מצמיד" מספר לימין המספר השני? נגיד יש לי את המספר 31724 ויוצא לי כמובן ש 3 1 ו-7 הם המספרים האי זוגיים שלי - שאני מחבר אותם התוצאה תהיה לא 317 אלא 11... קישור לתוכן שתף באתרים אחרים More sharing options...
NJorl פורסם 2006 באוקטובר 27 Share פורסם 2006 באוקטובר 27 יש לך כאן קטע תכנית ב- C# (אני לא יודע פסקלית) שאמור להוות חלק מהפתרון שלך הרעיון הוא לחשב שארית חלוקה ב- 10 של המספר הנתון ולשמור התוצאה בצדאחרי כן לחלק את המספר עצמו ב- 10לחזור שוב ושוב על שני הצעדים הללו בלולאה עד שהמספר שווה ל-0זו הדרך להפריד ספרה אחר ספרה ממספר נתון ומבלי לדעת מראש מה אורכו long n1 = 310819; long x2 = 0; while (n1 > 0) { x2 = n1 % 10; n1 = n1 / 10; } קישור לתוכן שתף באתרים אחרים More sharing options...
Judas Iscariot פורסם 2006 באוקטובר 27 מחבר Share פורסם 2006 באוקטובר 27 יש לך כאן קטע תכנית ב- C# (אני לא יודע פסקלית) שאמור להוות חלק מהפתרון שלך הרעיון הוא לחשב שארית חלוקה ב- 10 של המספר הנתון ולשמור התוצאה בצדאחרי כן לחלק את המספר עצמו ב- 10לחזור שוב ושוב על שני הצעדים הללו בלולאה עד שהמספר שווה ל-0זו הדרך להפריד ספרה אחר ספרה ממספר נתון ומבלי לדעת מראש מה אורכו long n1 = 310819; long x2 = 0; while (n1 > 0) { x2 = n1 % 10; n1 = n1 / 10; }תודה על העזרה אבל לפרק את הספרות הצלחתי, הבעיה שלי כרגע היא איך אני "מצמיד" ספרות כי הרי אם אני אעשה חיבור אז הוא יעשה חיבור..חשבתי להפוך את הספרות לchar ואז לשרשר אותם אחת לשנייה ליצירת מחרוזת ולהפוך חזרה למספר, הבעיה היא שעוד לא למדנו מחרוזת בפסקל ואני לא כ"כ יודע איך לעשות את כל זה בפסקל(בjavascript אני יכול לעשות את זה..). קישור לתוכן שתף באתרים אחרים More sharing options...
NJorl פורסם 2006 באוקטובר 27 Share פורסם 2006 באוקטובר 27 הבעיה שלך היא שאתה צריך לסרוק את המספר מימין לשמאלכי אז אתה לא צריך לדעת מחרוזות אז אתה יודע בוודאות שהספרה הראשונה תתווסף לספרת האחדותהשניה לספרת העשרות וכו'במקרה כזה מתאים רקורסיה מפרידה את המספר המקורי private static void ExtractDigits(long n) { if (n > 0) { ExtractDigits(n / 10); long x1 = n % 10; } }את ה- x1 בדוגמא אתה בודק אם הוא זוגי או אי זוגי , זה בטח לא בעיה בשבילךואז מוסיף למונה המתאים באופן הבא:עבור כל מונה אתה שומר משתנה מכפיל , שמכפיל עצמו פי 10 בכל פעם שאתה מוסיף ספרה למונה המתאיםנוסחת ההוספה היא x1 מהדוגמה למעלה כפול המכפיל + המונה את התוצאה שומר במונה, מיד אחרי כן את מכפיל את המכפיל ב- 10 קישור לתוכן שתף באתרים אחרים More sharing options...
Freeze פורסם 2006 באוקטובר 28 Share פורסם 2006 באוקטובר 28 תעשה 2 משתני עזר של מספרים שסופרים כמה ספרות יש כבר. למשל, אם זה המספר השלישי, אז צריך לעשות לולאה (עם עוד משתנה עזר) שגדל פי 10 כל ספירה. במקרה שזה המספר השלישי: x=100 (בכלליות, x=x*10). קישור לתוכן שתף באתרים אחרים More sharing options...
Judas Iscariot פורסם 2006 באוקטובר 28 מחבר Share פורסם 2006 באוקטובר 28 תודה Freeze אבל כבר הגעתי לפיתרון בעזרתו האדיבה של NJorl - תודה סתם אם זה מעניין מישהו(בעיקר בשביל חיפוש עתידי או משהו כזה), הנה הפיתרון: program quiz1;var num: integer; digit: integer; diver_even : integer; diver_odd : integer; even: integer; odd : integer; sum: integer;begin diver_even:= 1; diver_odd:= 1; odd := 0; even:= 0; writeln('enter a number without zeroes'); readln(num); while (num mod 10) > 0 do begin digit := num mod 10; num := num div 10; if (digit mod 2) = 0 then begin even := even + (digit * diver_even) ; diver_even := diver_even *10 ; end else begin odd := odd + (digit * diver_odd) ; diver_odd := diver_odd * 10; end;end;sum := odd + even;writeln(odd,"+",even,"=",sum);end. קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.