פורסם 2015 באפריל 2210 שנים היי חבר'ה מה קורה חג שמחאני יודע שהשגיאה הזו קורית כאשר יכולה להיות סיטואציה שאין לה return כלומר שלא סגרתי את כל האפשרויות, אבל מישהו יכול להגיד לי מה חסר לי בדיוק?(התוכנית קולטת מספר, ואז בתת פעולה בודקת האם הוא מספר מיוחד. מספר מיוחד זה מספר שהוא + המספר ההופכי שלו מבחינת הספרות הוא מספר ריבועי. למשל אם המספר הוא 47, אז 47+74 = 121. המספר 121 הוא ריבועי של 11, לכן 47 הוא מספר מיוחד). מדובר בשפת JAVAimport java.util.Scanner;public class Question2{ public static void main ( String[ ] args ) { Scanner scan = new Scanner (System.in); int num; System.out.println ("Enter a number"); num=scan.nextInt(); if (special(num)==true) System.out.println ("Number is special"); else System.out.println ("Number is not special"); } public static boolean special (int number) //תת פעולה שבודקת האם המספר מיוחד { int OppositeNum=0; while (number!=0) { int temp; temp=number%10; OppositeNum=OppositeNum*10+temp; number=number/10; } int sum; sum=number+OppositeNum; for (int k=1; k<=sum/2; k++) { if (k*k==sum) return true; else return false; } }} נערך 2015 באפריל 2210 שנים על-ידי tsachiy
פורסם 2015 באפריל 2210 שנים ברוך הבא לפורום.להבא, תכתוב קוד בתוך תגית CODE, כדי שיהיה קריא.לגופו של עניין, הreturn שלך נמצא בתוך לולאת הfor בלבד. תאורטית, יכול להיות מצב שהלולאה לא תתבצע בכלל ואז לא יהיה לך return.האלגוריתם עצמו לא נכון גם כן. זה נכון שאם מצאת ריבוע ששוה לסכום - אפשר להחזיר true מיד. אבל מה שאתה תעשה היא תבדוק מספר אחד, ואם הריבוע שלו לא שווה לסכום, מיד תחזיר false בלי לבדוק את האחרים, שזה בבירור לא מה שהיית רוצה.
פורסם 2015 באפריל 2210 שנים מחבר הי אחי תודה על העזרה, כבר עליתי על זה אבל עכשיו הוא נותן לי NUmber is not special גם כשהמספר הוא כן:import java.util.Scanner;public class Question2{ public static void main ( String[ ] args ) { Scanner scan = new Scanner (System.in); int num; System.out.println ("Enter a number"); num=scan.nextInt(); if (special(num)==true) System.out.println ("Number is special"); else System.out.println ("Number is not special"); } public static boolean special (int number) //תת פעולה שבודקת האם המספר מיוחד { int OppositeNum=0; while (number!=0) { int temp; temp=number%10; OppositeNum=OppositeNum*10+temp; number=number/10; } int sum, check=0; sum=number+OppositeNum; for (int k=1; k<=sum/2; k++) { if (k*k==sum) check=1; } if (check==1) return true; else return false; }}
פורסם 2015 באפריל 2310 שנים בשורה sum=number+OppositeNum;אתה משתמש באותו NUMBER שכבר קיצצת בלולאה...לכן תיצור משתנה שישמור לך את ה-NUMBER המקורי.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.