שלח תשובה

זירת השאלות

3474
צפיות
8
תשובות

שאלה של מתחילים ב#C צריך עזרה

,‏ 20 במאי, 2014


4. בחודשים אפריל, יוני, ספטמבר ונובמבר 30 ימים.
בחודש פברואר יש 29 ימים בשנה מעוברת ו-28 ימים בשנה שאינה מעוברת.
בשאר החודשים יש 31 ימים.

ישנה שנה מעוברת אם אחד מהמקרים הבאים קורה:


•השנה מתחלקת ב-4 אך אינה מתחלקת ב-100

•השנה מתחלקת ב-400

א. פתח ויישם אלגוריתם שיקלוט תאריך במספרים לדוגמה (1994 6 12) וידפיס אם התאריך תקין או לא.
ב. אם התאריך תקין, תודפס הודעה עוד כמה ימים נשארו לשבת הבאה, לסוף החודש, לחופש הגדול ולסוף השנה (סוף השנה=31.12).
ג. אם התאריך תקין, יודפס בנוסף לכך התאריך של היום שלמחרת (שימו לב למקרים של סוף חודש וסוף שנה).
ד. יודפס גם היום שלפניו אם התאריך תקין.
ה. אם התאריך לא תקין, יודפס התאריך התקין הכי קרוב אליו (לדוגמה: ל- 2000 13 54 יודפס התאריך 31.12.2000).


הנה מה שעשיתי עד כאן סעיף א’

http://pastebin.com/pb2Y42sN


לא מבין איך לעשות את החודשים
אני מצליח עד סעיף א’

שאר הסעיפים פשוט מבלבלים מדי , יש לי ידע אבל זה מבלבל איך לחלק את החודשים ואת הימים זה יותר מדי לא מוצא פתרון

8 תשובות

  1. dorkelner הגיב:

    תרגיל ארוך נורא, קח בחשבון שסעיף א’ שלך לא נכון על כל המקרים, למשל אם אני בחודש ה12, התאריך לא מתקבל, לא משנה באיזה יום ובאיזה שנה זה צריך להיות גם שווה, ובכלל יש המון המון מקרים שצריך לבדוק. הייתי ממליץ לך לעשות את זה עם switch, אם למדת, אם לא, ממליץ לך ללמוד, כי בif זה ייקח לך המון, המון זמן.

  2. Illidan5 הגיב:

    למדתי SWITCH לא לולאות אבל, אבל אני לא מבין איך SWITCH בא לידי ביטוי פה ? אני חייב הסברים מפורטים זה מסובך לי

  3. אבי123 הגיב:

    דוגמא לשימוש בSWITCH:

    switch (month)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
    numDays = 31;
    break;
    case 4:
    case 6:
    case 9:
    case 11:
    numDays = 30;
    break;
    case 2:
    if ( ((year%4 == 0) && (year%100 != 0)) || (year%400 == 0) )
    numDays = 29;
    else
    numDays = 28;
    break;
    default:
    Console.WriteLine("Error, Acceptable values for months " +
    "are 1-12");
    break;
    } // switch

  4. Illidan5 הגיב:

    כן על החלק הזה כבר עזרו לי אבל:

    משהו לא הגיוני

    כשאני מנסה לחשב כמה ימים נשאר לסוף חודש:

    if (months == 1|| months==3|| months==5|| months==7||months==8||months==10||months==12)

    Console.WriteLine("Number of days untill end of month: " +(31-days));

    זה תמיד יוצא 0, אני עושה 31-הימים ונגיד אני רושם 15 זה אמור לתת לי 16, אבל זה תמיד רושם 0

    ואגב שבת וחופש גדול מוסבך מאוד אם מישהו יכול לעזור

  5. Illidan5 הגיב:

    הבנתי , השתמשתי בDAYS פעמיים , עכשיו השתמשתי במשתנה אחר וזה עבד

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

  6. Illidan5 הגיב:

    הצלחתי לחשב שנה אבל בדרך לא כזאת חכמה

    פשוט עברתי חודש חודש וחישבתי:

    if (months==1)
    Console.WriteLine("Number of days untill end of year: " + (364-31-days));

    if (months == 2)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz-days));
    if (months == 3)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz – 31 – days));
    if (months == 4)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz – 31 – 30 – days));
    if (months == 5)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz – 31 – 30 – 31 – days));
    if (months == 6)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz – 31 – 30 – 31 – 30 – days));
    if (months == 7)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz – 31 – 30 – 31 – 30 – 31 – days));
    if (months == 8)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz – 31 – 30 – 31 – 30 – 31 – 31 – days));
    if (months == 9)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz – 31 – 30 – 31 – 30 – 31 – 31 – 30 – days));
    if (months == 10)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz – 31 – 30 – 31 – 30 – 31 – 31 – 30 – 31 -days));
    if (months == 11)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz – 31 – 30 – 31 – 30 – 31 – 31 – 30 – 31 – 30 – days));
    if (months == 12)
    Console.WriteLine("Number of days untill end of year: " + (364 – 31 – dayz – 31 – 30 – 31 – 30 – 31 – 31 – 30 – 31 – 30 – 31 – days));

  7. Illidan5 הגיב:

    זה הקוד עד עכשיו

    http://pastebin.com/0F0iALpD

    חישבתי את היום הבא בחודש כולל התחשבות בסוף חודש

    אבל כשאני מריץ זה מריץ לי את כל החודשים למה ?

    הנה תמונה

    http://s27.postimg.org/r1n5bzobn/image.jpg

    למי יש פתרון מהיר לזה?

  8. chanash הגיב:

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

שלח תשובה