עזרה בג'אווה - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה בג'אווה


shvebish1

Recommended Posts

שלום,

אני אשמח אם מישהו יוכל לעזור לי ( כבר שברתי את הראש שעות על זה :/)

אני רוצה לכתוב תוכנית שהמשתמש מכניס מספר ורק בעזרת לולאות (ללא מערכים וללא מחסניות)

לרשום כפלט את כל המספרים השונים זה מזה וכמה פעמים הם מופיעים ....

לדוגמא:

המספר 12340001

הפלט יהיה :

1 - מופיע 2

2 - מופיע 1

3 - מופיע 1

4 - מופיע 1

0 - מופיע 3

תודה מראש לעוזרים.

קישור לתוכן
שתף באתרים אחרים

הבעיה היא לא לספור כמה פעמים הספרה מופיעה אלא לרשום את הספרה שאני רוצה לספור רק פעם אחת ...

(כמו בדוגמא ש 1 מופיע פעמיים אז היא לא כתובה פעמיים בפלט).

קישור לתוכן
שתף באתרים אחרים

כן רשמתי בהודעה הראשונה...

הכיוון שאני חשבתי זה לקחת את המספר כסטרינג ולעבור בשתי לולאות FOR שאחת תרוץ ותבדוק אם המספר האחרון שווה לאחד המספרים בהמשך .

אם כן שלא ירשום אותו ואם לא אז שירשום אותו....

ובלולאה השניה פשוט תתבצע הספירה במשתנה COUNTER.

הבעיה היא שתמיד שאני רץ המספר יש כמה ספרות שונות ולכן הוא רושם לי את המספר כמה פעמים .... ואסור לשכפל מספר....

הדרך השניה שחשבתי זה בתפריט סוויטש ... אבל זה ממש מגושם ולא נראה לי שזאת הכוונה בתרגיל :)

- - - תגובה אוחדה: - - -

public class try1 {

public static void main(String[] args) {

int num = 1000001;

int temp;

int counter0 = 0;

int counter1 = 0;

int counter2 = 0;

int counter3 = 0;

int counter4 = 0;

int counter5 = 0;

int counter6 = 0;

int counter7 = 0;

int counter8 = 0;

int counter9 = 0;

while (num > 0)

{

temp = num % 10;

switch (temp)

{

case (0): counter0++;

break;

case (1):counter1++;

break;

case (2):counter2++;

break;

case (3):counter3++;

break;

case (4):counter4++;

break;

case (5):counter5++;

break;

case (6):counter6++;

break;

case (7):counter7++;

break;

case (8):counter8++;

break;

case (9):counter9++;

break;

}

num /= 10;

}

if (counter0 > 0)

System.out.println("the number '0' " + " " + counter0 + " times");

if (counter1 > 0)

System.out.println("the number '1' " + " " + counter1 + " times");

if (counter2 > 0)

System.out.println("the number '2' " + " " + counter2 + " times");

if (counter3 > 0)

System.out.println("the number '3' " + " " + counter3 + " times");

if (counter4 > 0)

System.out.println("the number '4' " + " " + counter4 + " times");

if (counter5 > 0)

System.out.println("the number '5' " + " " + counter5 + " times");

if (counter6 > 0)

System.out.println("the number '6' " + " " + counter6 + " times");

if (counter7 > 0)

System.out.println("the number '7' " + " " + counter7 + " times");

if (counter8 > 0)

System.out.println("the number '8' " + " " + counter8 + " times");

if (counter9 > 0)

System.out.println("the number '9' " + " " + counter9 + " times");

}

זה מה שחשבתי.... לא נראה לי שזאת כוונת המשורר.... :) אבל זה עובד חחחחחח

קישור לתוכן
שתף באתרים אחרים

כשאתה כותב קוד תשתמש בטג קוד (צריך להשתמש במצב מתקדם בשביל זה) כדי שיהיה יותר קריא.

השיטה שלך היא יחסית בסדר, כאמור היא לא יפה במיוחד כי היא דורשת משתנה עבור כל ספרה, אבל ככה זה כשאתה לא יכול להשתמש במערכים.

תחשוב איך אתה עושה את זה ע"י שימוש במשתנה counter אחד בלבד, אבל עם עוד לולאה (דהיינו האלגוריתם יהיה פחות יעיל).

קישור לתוכן
שתף באתרים אחרים

  • 1 חודש מאוחר יותר...

הפתרון שלך בסדר גמור למקרה ספציפי שתחום הערכים שלך לא גדול מדי (10 ערכים 0 עד 9). הפתרון הפחות יעיל יהיה נכון לכל תחום ערכים (מעל כל א"ב). הלולאה החיצונית מבצעת איטרציה על הערכים שאת כמות המופעים שלהם אתה מחפש לספור, (במקרה זה 0 עד 9). אז מה נותר בעצם לעשות עם לולאה פנימית? מה תעשה בלולאה החיצונית לאחר שהפנימית סיימה, ולפני שאתה עובר לאיטרציה הבאה בחיצונית?

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...