1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| #include <stdlib.h>
#include <stdio.h>
#include <assert.h>
int dateIsValid(int jour, int mois, int annee)
{
int result = 1; /* on part en supposant que tout est juste */
int bissextile = (annee%4 == 0) && ((annee%100 !=0) || (annee%400==0));
if(jour < 1)
result = 0;
else
{
switch(mois)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(jour > 31)
result = 0;
break;
case 4:
case 6:
case 9:
case 11:
if(jour > 30)
result = 0;
break;
case 2:
if(bissextile != 0)
{
if(jour > 29)
result = 0;
}
else
if(jour > 28)
result = 0;
break;
default:
result = 0;
}
}
return result;
}
int main (void)
{
assert(dateIsValid(31, 3, 2012) == 1);
assert(dateIsValid(32, 3, 2012) == 0);
assert(dateIsValid(29, 2, 2012) == 1);
assert(dateIsValid(30, 2, 2012) == 0);
assert(dateIsValid(29, 2, 2011) == 0);
return 0;
} |
Partager