וובמאסטר - תיכנות ובניית אתרים
שאלות ותשובות:
הוסף תשובה

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


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

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


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

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

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


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

http://pastebin.com/pb2Y42sN


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

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

Illidan5, 20/5/2014
הוסף תשובה  |  הוסף הערה
8 תשובות לשאלה זו
הוסף תשובה
תרגיל ארוך נורא, קח בחשבון שסעיף א' שלך לא נכון על כל המקרים, למשל אם אני בחודש ה12, התאריך לא מתקבל, לא משנה באיזה יום ובאיזה שנה זה צריך להיות גם שווה, ובכלל יש המון המון מקרים שצריך לבדוק. הייתי ממליץ לך לעשות את זה עם switch, אם למדת, אם לא, ממליץ לך ללמוד, כי בif זה ייקח לך המון, המון זמן.
dorkelner, 20/5/2014
הוסף תשובה  |  הוסף הערה
למדתי SWITCH לא לולאות אבל, אבל אני לא מבין איך SWITCH בא לידי ביטוי פה ? אני חייב הסברים מפורטים זה מסובך לי
Illidan5, 28/5/2014
הוסף תשובה  |  הוסף הערה
דוגמא לשימוש ב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



אבי123, 10/6/2014
שנה מעוברת אינה קשורה לחודש פברואר מלא או חסר היא קשורה לשני אדרים בלוח העברי - שרה חיה, 11/6/2014
נכון, אבל בשאלה שהוא שאל הוא התכוון האם חודש פברואר בן 29 או 28 יום, שזה דבר שמשתנה בשנה הלועזית. הוא לא התכוון לתאריך עברי. ולכן האלגוריתם נכון. - אבי123, 11/6/2014
בכל אופן יש דרכים קצרות יותר - שרה חיה, 25/6/2014
נשמח אם תחכימי אותנו מניסיונך.. אני רק בשלבי לימוד, ואשמח לדעת עוד. תודה. - אבי123, 25/6/2014
הוסף תשובה  |  הוסף הערה
כן על החלק הזה כבר עזרו לי אבל:

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

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






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

ואגב שבת וחופש גדול מוסבך מאוד אם מישהו יכול לעזור
Illidan5, 11/6/2014
הוסף תשובה  |  הוסף הערה
הבנתי , השתמשתי בDAYS פעמיים , עכשיו השתמשתי במשתנה אחר וזה עבד

בכל מקרה אני מסתבך עדיין בהמשך התרגיל, לחשב שבת וחופש גדול זה ממש קשה אולי אני יוותר , אני מנסה לחשב כרגע סוף שנה , מישהו יכול לתת טיפים ?
Illidan5, 22/6/2014
הוסף תשובה  |  הוסף הערה
הצלחתי לחשב שנה אבל בדרך לא כזאת חכמה

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

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));
Illidan5, 22/6/2014
הוסף תשובה  |  הוסף הערה
זה הקוד עד עכשיו

http://pastebin.com/0F0iALpD

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

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

הנה תמונה

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

למי יש פתרון מהיר לזה?
Illidan5, 23/7/2014
הוסף תשובה  |  הוסף הערה
הif שלך אמור להיות משורשר, כל פעם שאלת שוב מהו מס' הימים ואני חושבת שזו הבעיה
chanash, 5/8/2014
הוסף תשובה  |  הוסף הערה
הוסף תשובה לשאלה זו:




וובמאסטר © כל הזכויות שמורות