עבור לתוכן

צריך עזרה בתוכנה שמחליפה תאריך.

Featured Replies

פורסם

היי.

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

2005 ,11 ,3.

עכשיו צריך לקחת בחשבון שהתוכנה תוכל גם כמובן להחליף חודשים במקרה שנגיד היום שווה ל-31 או שנים. צריך גם לקחת בחשבון שיש חודשים אם 31 ימים ואם 30 ימים ויש את פברואר שזה 28 יום ובשנה מעוברת (שנה שמתחלקת לארבע) בפברואר יש 29 ימים.

אז התחלתי לכתוב את התוכנה (בסי כמובן!) (משתמש בבורלנד) הכל טוב ויפה עד שנתקלתי בבעיה.

זה מה שכתבתי:

#include<stdio.h>

#include<conio.h>

void main()

{

clrscr();

int num1,num2,num3;

printf("Please enter a date\n");

scanf("%d%d%d",&num1,&num2,&num3);

if(((((((num1<=30)&&(num2==1)||(num2==3)||(num2==5)||(num2==7)||(num2==8)||(num2==10)))))))

{

printf("Here you go!\n");

printf("%d ",num1+1);

printf("%d ",num2);

printf("%d ",num3);

}

if(num1==31)

if((((((num2==1)||(num2==3)||(num2==5)||(num2==7)||(num2==8)||(num2==10))))))

{

printf("Here you go!\n");

printf("1 ");

printf("%d ",num2+1);

printf("%d ",num3);

}

}

אז מה שכתבתי זה בעצם את המקרה הראשון שאם החודש הוא: ינואר, מרץ, מאי, יולי, אוגוסט, אוקטובר והיום הוא קטן מ-31 אז הפלט הוא יום+1, חודש, שנה

ואת המקרה השני שאם החודשים הם אותם חודשים שבמקרה הראשון אבל היום שווה ל-31 אז הפלט הוא יום=1, חודש+1, שנה

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

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

בקיצור אני ממש צריך ערזה!

ותודה מראש!

פורסם

יש לך בעיה בסוגריים. תסדר אותה.

פורסם

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

למה יש לך כל כך הרבה סוגריים? זה סתם מבלבל ולא נחוץ.

בכל מקרה, הבעיה אכן נעוצה בסוגריים האלה:

(num1<=30)&&(num2==1)||(num2==3)||(num2==5)||(num2==7)||(num2==8)||(num2==10)

התנאי הזה אומר בעצם:

"אם (num1 קטן מ-30 וגם num2==1), או ש-num2==3 או ש-num2==5 וכן הלאה..."

כלומר, אם num2==3 אז בכלל לא משנה לו מהו num1, התוצאה תהיה חיובית.

אתה צריך לשים סוגריים סביב כל ה-||-ים שלך, כלומר:

(num1<=30)&&((num2==1)||(num2==3)||(num2==5)||(num2==7)||(num2==8)||(num2==10))

(דרך אגב, יש גם דרך הרבה יותר אלגנטית לכתוב את התכנית הזו, אבל אני לא אכנס אליה עכשיו...)

פורסם
  • מחבר

תודה זה עזר לי מאוד!!!!!! :)

ארכיון

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

דיונים חדשים