ABA


"מה הבעיה בתוכנית הבאה (JAVA)"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15588 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15588
Drunken-Dwarf
חבר מתאריך 21.9.09
4563 הודעות
   16:49   28.11.09   
אל הפורום  
  מה הבעיה בתוכנית הבאה (JAVA)  
 
   אני כבר שעה על זה ולא מבין מה הבעיה :\

*כתוב תוכנית הקולטת מספר שלם, המוצאת ומדפיסה כמה ספרות גדולות מ-5 יש בו.


int num;
int MostRightdigit;
int Ndigits;

Ndigits = 0;

System.out.println("הכנס מספר בבקשה");
num = kelet.nextInt();

MostRightdigit = num % 10;

while (num > 9)
{
num /= 10;

if (MostRightdigit >= 5);

Ndigits++;

}

System.out.println("יש" + Ndigits + "ספרות הגדולות מ5");

למה זה לא עובד? :S


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  קודם כל התנאי if עם נקודה פסיק בסוף VeNom  28.11.09 16:55 1
     תודה אחי- הדוגמא שלך עזרה לי, שיניתי ת'תוכנית וזה עובד Drunken-Dwarf 28.11.09 17:06 2
  -עוד בעיה בתוכנית אחרת- Drunken-Dwarf 28.11.09 17:43 3
     תבין את הלוגיקה מאחורי הכל.. VeNom  28.11.09 18:11 4
         עדיין לא הבנתי בדיוק מה זה הבוליאן הזה Drunken-Dwarf 28.11.09 18:57 5
             זה משתנה VeNom  28.11.09 19:52 8
                 למה שתשנה ל-1 אם לא מתחלק ב-2? ולמה הלולאה תלויה בזה Drunken-Dwarf 28.11.09 20:33 9
                     אוקיי VeNom  28.11.09 21:07 10
         לא באמת צריך לבדוק אם כל ספרה היא זוגית El-Ad 28.11.09 18:58 6
             תעזור לי בתגובה 5 חח Drunken-Dwarf 28.11.09 19:20 7
         באופן כללי לא לעבוד ככה ב-JAVA. Deuce  29.11.09 01:11 11

       
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   16:55   28.11.09   
אל הפורום  
  1. קודם כל התנאי if עם נקודה פסיק בסוף  
בתגובה להודעה מספר 0
 
   במקום שיראה ככה:

if (MostRightdigit >= 5)
{
Ndigits++;
}

דבר שני האלגוריתם עצמו טוב טוב..
אתה אמור לשים בלולאה מנגנון שמצד אחד לוקח את הפסרה הימנית ביותר (ע"י מודולו) ומצד שני מקצץ ספרה בסוף איטרציה..
הייתי עושה משהו כזה:

int count = 0 ;
int modolo;
int num = 983443;//for example
while(num > 0)
{
modolo = num % 10;
if(modolo >= 5)
{
count++;
}
num/=10;
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Drunken-Dwarf
חבר מתאריך 21.9.09
4563 הודעות
   17:06   28.11.09   
אל הפורום  
  2. תודה אחי- הדוגמא שלך עזרה לי, שיניתי ת'תוכנית וזה עובד  
בתגובה להודעה מספר 1
 
   זה השינוי


while (num > 5)
{
MostRightdigit = num % 10;
if (MostRightdigit > 5)
{
Ndigits++;
}
num /= 10;
}

System.out.println("יש" + Ndigits + "ספרות הגדולות מ5");

}

}

שוב תודה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Drunken-Dwarf
חבר מתאריך 21.9.09
4563 הודעות
   17:43   28.11.09   
אל הפורום  
  3. -עוד בעיה בתוכנית אחרת-  
בתגובה להודעה מספר 0
 
   *תוכנית הקולטת מספר שלם המוצאת ומדפיסה האם כל ספרות המספר זוגיות.


int num;
int MostRightdigit;

System.out.println("הכנס מספר");
num = kelet.nextInt();

while (num > 0)
{
MostRightdigit = num % 10;
if ((num /= MostRightdigit) % 2 == 0)
num /= 10;
}

System.out.println("כל הספרות זוגיות");

}

}


אני מאמין שאני בכיוון הנכון אבל למה זה לא עובד? :\


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   18:11   28.11.09   
אל הפורום  
  4. תבין את הלוגיקה מאחורי הכל..  
בתגובה להודעה מספר 3
 
   אתה די עובד נכון..
אבל תעשה כזה דבר..

int flag =0;
int rightdigit;
int num = 46286;//for example;
while( (num > 0) && (flag == 0) )
{
rightdigit = num % 10;
if((rightdigit % 2) != 0)
{
flag = 1;
}
num /= 10;
}
if(flag == 0)
{
תדפיס כל הספרות זוגיות
}
else
{
יש לפחות ספרה אחת אי זוגית
}
עכשיו מה שעשיתי כאן זה קלטתי מספר..סתם לקחתי דוגמא.
הבאתי משתנה בוליאני flag
(לא יודע אם קיים בוליאני ב java אבל זה לא העניין)..
אתחלתי את הדגל להיות 0.
כל עוד הדגל הוא 0 והמספר קיים אז תכנס ללולאה
בלולאה תקח את הספרה הימנית של המספר ותבדוק האם יש לה שארית בחלוקה ב 2.
אם אין לה שארית תקצץ סיפרה וחזור על הלולאה עד שישאר מספר = 0.
אחרת תדליק את הדגל(הוא 1 אם יש ספרה אחת שהיא אי זוגית,ואז התנאי הראשי של הלולאה אינו מתקיים ואתה נזרק החוצה).
אתה נזרק לתוך תנאי שבודק האם הדגל 0 או שהוא שונה ל 1..
וזהו..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Drunken-Dwarf
חבר מתאריך 21.9.09
4563 הודעות
   18:57   28.11.09   
אל הפורום  
  5. עדיין לא הבנתי בדיוק מה זה הבוליאן הזה  
בתגובה להודעה מספר 4
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   19:52   28.11.09   
אל הפורום  
  8. זה משתנה  
בתגובה להודעה מספר 5
 
   סתם שים אותו בצד.
זה משתנה רגיל אתחלתי אותו לאפס.
אמרתי שאם יש ספרה שלא מתחלקת ב 2 אני אשנה אותו לאחד(מאין סימן כזה) ככה שהתנאי של הלולאה(שתלויה בכך שהמשתנה ההוא הוא אפס) ייעצר ואתה תדע שבאמת ספרה אחת לפחות לא מתחלקת ב 2.
זאת שיטה מספיק טובה..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Drunken-Dwarf
חבר מתאריך 21.9.09
4563 הודעות
   20:33   28.11.09   
אל הפורום  
  9. למה שתשנה ל-1 אם לא מתחלק ב-2? ולמה הלולאה תלויה בזה  
בתגובה להודעה מספר 8
 
   שהוא אפס?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   21:07   28.11.09   
אל הפורום  
  10. אוקיי  
בתגובה להודעה מספר 9
 
   בוא נקח דוגמא
נניח יש לך את המספר
684
עכשיו המספר גדול מאפס וגם ה flag=0 לפי התאחול ולכן הוא נכנס ללולאה.
עכשיו אני מלחץ את ה מספר הימני שהוא 4..המספר מתחלק ב 2 ולכן ה דגל לא משתנה..מחלק את המספר ב 10 ונשארנו עם 68.
חוזר לתחילת הלולאה ובודק את התנאי..המספר גדול מאפס והדגל עדיין אפס..שוב פעם נכנס..מחלץ את הספרה הימנית שהיא 8..הוא מתחלק ב 2 ולכן ה דגל עדיין 0..מחלק את המספר ב 10 ונשארו עם 6.
חוזר ללולאה..עכשיו המספר עדיין גדול מאפס והדגל עדיין 0 ולכן אני נכנס ללולאה..מחלק את הספרה הימנית שהיא 6.בודק שהיא מתחלקת ב 2 ללא שארית והיא אכן כן ולכן הדגל לא משתנה.מחלק את המספר ב 10 ונשארו עם 0.
הולך לתנאי של הלולאה..כעת אומנם הדגל עדיין 0 אבל המספר לא גדול מאפס ויש ביניהם סימן וגם וצריך ששניהם יתקיימו ע"מ שיכנס שוב ללולאה ולכן אני נזרק החוצה.
ממשיך בתוכנית..יש תנאי שבודק האם ה דגל עדיין 0 , אם כן הרי שכל הספרות התחלקו ב 2 ולכן כל הספרות זוגיות.
אם הדגל השתנה מספיק שיש ספרה אחת שלא התחלקה ל 2 ולכן אפשר להודיע שלא כל הספרות זוגיות.

עכשיו קח דוגמא קצרה יותר עם המספר
678
נכנס ללולאה..כאשר הדגל 0 והמספר גדול מאפס.
נלחץ את הספרה הימנית 8 שמתחלקת ב שתיים ולכן הדגל 0.
נחלק ב 10 את המספר ונקבל 67.
כעת נגיע לתנאי..המספר גדול מאפס והדגל עדיין אפס נכנס שוב.
עכשיו נחלץ את הספרה הימנית שהיא 7.
7 אינו מתחלק ב 2 בלי שארית ולכן ה דגל הופך להיות 1.מחלק את המספר ב 10 ונשאר עם 6.
נגיע עכשיו לתנאי של הלולאה..המספר שלנו גדול מ 0 אבל הדגל אינו 0 ובשביל להיכנס ללולאה צריכים ששניהם יתקיימו(פעולת וגם) ולכן אני מסיים את הלולאה.
ממשיך לתנאי שבודק האם הדגל 0.אבל הוא אינו 0 ולכן אני נכנס לתנאי השני שמוסר הודעה שלא כל הספרות זוגיות.
כאילו מספיק שהוא נתקל בספרה אחת אי זוגית הדגל הופך להיות 1 , אתה יוצא מהלולאה ונכנס לתנאי שתופס את זה שלא כל הספרות זוגיות.
כתבתי את זה מהר אז בטח יש שגיאות כתיב וכאלה אז תתעלם..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
El-Ad
חבר מתאריך 27.9.08
5123 הודעות
   18:58   28.11.09   
אל הפורום  
  6. לא באמת צריך לבדוק אם כל ספרה היא זוגית  
בתגובה להודעה מספר 4
 
   אפשר לבדוק את המודולו של המספר עצמו ב 2 ולחלק כל פעם ב 10.. אבל לא קריטי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Drunken-Dwarf
חבר מתאריך 21.9.09
4563 הודעות
   19:20   28.11.09   
אל הפורום  
  7. תעזור לי בתגובה 5 חח  
בתגובה להודעה מספר 6
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   01:11   29.11.09   
אל הפורום  
  11. באופן כללי לא לעבוד ככה ב-JAVA.  
בתגובה להודעה מספר 4
 
בכוונה יצרו את המשתנה הבוליאני וקוד נכון צריך להשתמש בו.
במידה ואתם רוצים משתנה בוליאני השתמשו בטיפוס boolean המקבל ערכים true ו-false.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net