i am designing a code that will calculate tomorrows date but there is some problem with the code,
when i enter
year = 2008 or anyother
month =12
day = 31
it gives tmorrows date as 1/2/2008

``````#include<conio.h>
#include<stdio.h>
main(void)
{
int t;
int y,d=1,i,m=1;
printf("Enter the Year: ");
scanf("%4u",&y);
if(y<0)
y=-y;
printf("Enter the Month: ");
scanf("%2u",&m);
if(m<=0 || m>=12)
m=1;
i=y%4;
printf("Enter the Day: ");
scanf("%2u",&d);
if (d>=1&&d<28)
d=d+1;
else if(d==i&&m==2)
{d=1;
m=3;}
else if (d==30&&m==4||m==6||m==9||m==11)
{d=1;
m=m+1;}
else if (d==31&&m==1||m==2||m==3||m==5||m==7||m==8||m==10)
{
d=1;
m=m+1;
}
else if(d==31&&m==12)
{
d=1;
m=1;
y=y+1;
}
printf("Tomorrow's Date is\n  %d/%d/%d ",d,m,y);
getch();
}``````
6
Contributors
5
Replies
6
Views
9 Years
Discussion Span
Last Post by devnar

You are kicking off December! :P
Check `if(m<=0 || m>=12)` .
It should be `if(m<=0 || m>12)` .

Also check your leap years handling.

Before you do the above, migrate to the C forum

Chris

Can you use the functions in time.h? If you can, then just fill in a struct tm and call mktime() to calculate tomarrow

``````#include <time.h>
...
int main()
{
int m = 11; // November
int y = 2008;
int d = 2;

struct tm tm;
// clear all members of the structure
memset(&tm,0,sizeof(struct tm));

tm.tm_year = y-1900;
tm.tm_mon = m-1;
tm.tm_day = d;
// increment tomarrow
tm.tm_mday++;
mktime(&tm);``````

Not to mention, the unindented code which is simply awful to look at.

Second that. Also, flow of the code is confusing which is really awful considering the simplicity of the problem.

main returns an integer. So it's `int main()` not just `main(void)` .

This test condition is wrong:

``else if(d==i&&m==2)``

You aren't checking for leap years, although at one point you do find `i=y%4;` . Comparing this value with the number of days screws up the whole thing.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.