צפיות
תשובות
שאלה של מתחילים ב#C צריך עזרה
4. בחודשים אפריל, יוני, ספטמבר ונובמבר 30 ימים.
בחודש פברואר יש 29 ימים בשנה מעוברת ו-28 ימים בשנה שאינה מעוברת.
בשאר החודשים יש 31 ימים.
ישנה שנה מעוברת אם אחד מהמקרים הבאים קורה:
•השנה מתחלקת ב-4 אך אינה מתחלקת ב-100
•השנה מתחלקת ב-400
א. פתח ויישם אלגוריתם שיקלוט תאריך במספרים לדוגמה (1994 6 12) וידפיס אם התאריך תקין או לא.
ב. אם התאריך תקין, תודפס הודעה עוד כמה ימים נשארו לשבת הבאה, לסוף החודש, לחופש הגדול ולסוף השנה (סוף השנה=31.12).
ג. אם התאריך תקין, יודפס בנוסף לכך התאריך של היום שלמחרת (שימו לב למקרים של סוף חודש וסוף שנה).
ד. יודפס גם היום שלפניו אם התאריך תקין.
ה. אם התאריך לא תקין, יודפס התאריך התקין הכי קרוב אליו (לדוגמה: ל- 2000 13 54 יודפס התאריך 31.12.2000).
הנה מה שעשיתי עד כאן סעיף א'
http://pastebin.com/pb2Y42sN
לא מבין איך לעשות את החודשים
אני מצליח עד סעיף א'
שאר הסעיפים פשוט מבלבלים מדי , יש לי ידע אבל זה מבלבל איך לחלק את החודשים ואת הימים זה יותר מדי לא מוצא פתרון
8 תשובות
תרגיל ארוך נורא, קח בחשבון שסעיף א' שלך לא נכון על כל המקרים, למשל אם אני בחודש ה12, התאריך לא מתקבל, לא משנה באיזה יום ובאיזה שנה זה צריך להיות גם שווה, ובכלל יש המון המון מקרים שצריך לבדוק. הייתי ממליץ לך לעשות את זה עם switch, אם למדת, אם לא, ממליץ לך ללמוד, כי בif זה ייקח לך המון, המון זמן.
למדתי SWITCH לא לולאות אבל, אבל אני לא מבין איך SWITCH בא לידי ביטוי פה ? אני חייב הסברים מפורטים זה מסובך לי
דוגמא לשימוש ב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
כן על החלק הזה כבר עזרו לי אבל:
משהו לא הגיוני
כשאני מנסה לחשב כמה ימים נשאר לסוף חודש:
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
ואגב שבת וחופש גדול מוסבך מאוד אם מישהו יכול לעזור
הבנתי , השתמשתי בDAYS פעמיים , עכשיו השתמשתי במשתנה אחר וזה עבד
בכל מקרה אני מסתבך עדיין בהמשך התרגיל, לחשב שבת וחופש גדול זה ממש קשה אולי אני יוותר , אני מנסה לחשב כרגע סוף שנה , מישהו יכול לתת טיפים ?
הצלחתי לחשב שנה אבל בדרך לא כזאת חכמה
פשוט עברתי חודש חודש וחישבתי:
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));
זה הקוד עד עכשיו
http://pastebin.com/0F0iALpD
חישבתי את היום הבא בחודש כולל התחשבות בסוף חודש
אבל כשאני מריץ זה מריץ לי את כל החודשים למה ?
הנה תמונה
http://s27.postimg.org/r1n5bzobn/image.jpg
למי יש פתרון מהיר לזה?
הif שלך אמור להיות משורשר, כל פעם שאלת שוב מהו מס' הימים ואני חושבת שזו הבעיה