Witam serdecznie,
mam napisać funkcje, która będzie sprawdzać czy miesiące : February,April,June,September,Novwmber, nie mają przypadkiem 30dni, jeżeli tak to ma wyskoczyć komunikat o złej dacie.
Niestety nie wiem co mam źle - program owszem i działa, wyskakuje bład, jeżeli któryś z ww. miesiący ma 30dni, ale wyskakuje przy każdym miesiącu, jeżeli wstawimy mu 30 dni.
Tutaj cały program:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <stdbool.h>
struct date
{
int year;
int month;
int day;
};
bool IsValidDate(struct date a)
{
if (a.month > 0 && a.month<13 && a.day>0 && a.day < 31)
{
return true;
}
else
{
return false;
}
}
bool IsValidDate2(struct date a)
{
if(a.month == 2 || a.day == 30 && a.day== 31 && a.month==4 || a.day==31 && a.month==6 || a.day==31 && a.month==9 || a.day ==31 &&a.month ==11 || a.day==31 )
{
return false;
}
}
void ShowDate( struct date b)
{
printf("%i ", b.year);
switch (b.month)
{
case 1:
printf("January");
break;
case 2:
printf("February ");
break;
case 3:
printf("March");
break;
case 4:
printf("April");
break;
case 5:
printf("May");
break;
case 6:
printf("June");
break;
case 7:
printf("July");
break;
case 8:
printf("August");
break;
case 9:
printf("September");
break;
case 10:
printf("October");
break;
case 11:
printf("November ");
break;
case 12:
printf("December");
break;
}
printf(" %i\n", b.day);
}
main()
{
struct date today; // struct date - TYPE and today - NAME
today.year = 2014;
today.month = 7;
today.day = 3;
struct date birthday = { 1995, 3, 31 };
if (IsValidDate(birthday) && IsValidDate2(birthday))
{
ShowDate(birthday);
}
else
{
printf("\nBAD DATE!!\n");
}
system("PAUSE");
}
A tutaj prawdopodobnie sprawca zamiesania:
if(a.month == 2 || a.day == 30 && a.day== 31 && a.month==4 || a.day==31 && a.month==6 || a.day==31 && a.month==9 || a.day ==31 &&a.month ==11 || a.day==31 )
Czy ktoś mógłby mi podpowiedzieć, co zrobić? Stworzyć więcej if'ow, gdzie każdy bedzie odpowidzialny za dany miesiąc?
Z góry bardzo dziękuję za pomoc!