פתח ויישם אלגוריתם המקבל כקלט מספר שלם חיובי.האלגוריתם יציג כפלט מספר שסדר ספרותיו הפוך למספר שהתקבל כקלט.
למשל:
קלט:3214--->פלט:4123,קלט:52--->פלט:25
תודה לעוזרים![]()
פתח ויישם אלגוריתם המקבל כקלט מספר שלם חיובי.האלגוריתם יציג כפלט מספר שסדר ספרותיו הפוך למספר שהתקבל כקלט.
למשל:
קלט:3214--->פלט:4123,קלט:52--->פלט:25
תודה לעוזרים![]()
|
|
זה פשוט תרגיל של פירוק ספרות וסידור מחדש.
יש לך שני משתנים שמכילים את המספרים. אחד הוא String והשני הוא integer .
הקלט מתבצע על ה integer .
אתה רץ עליו בלולאת while , כל עוד המספר שונה מ- 0.
בכל סיבוב של הלולאה אתה מפרק את הספרה הימנית של המספר ע"י:
ומחלק את המספר ב- 10 כדי שבסיבוב הבא תוכל לפרק את הספרה הבאה:קוד:digit=num%10;
אחרי שתי הפקודות האלה בסוף הלולאה משתנה ה String נכנס לתפקיד.קוד:num=num/10;
בגלל שב String אפשר לשרשר, אתה כל פעם מחבר את הספרה האחרונה שפירקת כך:
ומכיוון ש digit משתנה כל פעם יווצר המספר ההפוך.קוד:st=st+digit;
*חובה לאפס את משתנה ה String בהתחלה, אחרת בקומפילציה אתה תקבל שגיאה לוגית.
אם יש עוד בעיה אתה מוזמן לשאול.קוד:String st="";
נערך לאחרונה על ידי B1ackSn0w; 22-08-2008 בשעה 15:21.
תכירו את שמוליק, אבא קנה לי
הוא אוהב במבה, ביסלי ואת עודד מנשה
נכתב במקור על ידי אושרי
זה נכון?קוד:import java.util.*; class targil76 { static Scanner reader=new Scanner(System.in); public static void main(String[] args) { int num,digit,st=0; num=reader.nextInt(); while(num!=0) { digit=num%10; num=num/10; st=st+digit; } System.out.println(num); } }
לא, בגלל שעשית את st משתנה integer ולא String ובגלל זה הוא לא יחזיר לך כפלט את המספר ההפוך אלא את סכום הספרות כי בעצם הפכת אותו למשתנה סכום.
בהתחלה הוא שווה 0 ואז הוא שווה לעצמו פלוס הספרה, וכן הלאה.
ב String אין סכום, כשאתה עושה "+" הוא "משרשר" - כלומר מחבר את הספרות אחת אחרי השניה.
אמרתי בהתחלה שהמשתנה st הוא מסוג String ואתה הגדרת אותו בתור integer .
תכירו את שמוליק, אבא קנה לי
הוא אוהב במבה, ביסלי ואת עודד מנשה
נכתב במקור על ידי אושרי
וכדי לאפס משתנה String :קוד:String st;
קוד:st="";
תכירו את שמוליק, אבא קנה לי
הוא אוהב במבה, ביסלי ואת עודד מנשה
נכתב במקור על ידי אושרי