Salut,

Voila j’ai fait un petit code C pour valider une date a savoir si le mois comporte 31 ou 30 jour et 29 ou 28 jour pour février suivant si l’année est bissextile ou non.

Le programme fonctionne mais je voudrai savoir si, il y pas un moyen plus simple de le faire ou si vous voyez quelque chose qui cloche, j’avoue que je n’ai pas fait l’algo avant de faire le C ce qui est un tord..

.: Edit :.
Il semblerai que dans mon pmg, lorsque l'on rentre un date correcte par exemple 12/12/2005 il ne renvoie pas le résultat et prend en compte seulement
Le pgm a été compilé avec Dev C++ et Visual C++ v6
.: Edit :.

Voila le code du programme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
 /*	
**	Auteur: Oyo
**	Fichier: Verif Date
*/
 
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
	int j,m,a,di; /* Initialisation des vars */
 
	printf("Entrez le J/M/A: "); /* Affichage du txt */
	scanf("%d/%d/%d", &j,&m,&a); /* Récupération des vars */
	di=a%4; /* Calcule des année bisextille */
 
	/* 
	**  On verrifie que m est compris entre 0 et 12, et que j est compris entre 0 et 31 
	**	ainsi que le résultat du calcule des années bisextille:
	**	Si le résultat obtenue par le modulo et 1 alors c'est une année bisextille
	*/
 
	if ((m<0) || (m>12) || (j<0) || (j>31) || (di)) 
	{
		/* 
		**  On verrifie que les mois suivant comporte bien 31 jours, 
		**	sinon on retroune une erreur.	
		*/
 
		if((m==1) || (m==3) || (m==5) || (m==7) || (m==8) || (m==10) || (m==12))
		{
			if ((j>=31))
			{
				printf("Erreur! Il n'y a que 31 jours dans ce mois.\n");
			}
		}
 
		/* 
		**  On verrifie que les mois suivant comporte bien 30 jours, 
		**	sinon on retroune une erreur.	
		*/
 
		else if ((m==4) || (m==6) || (m==9) || (m==11))
		{
			if (j>=30)
			{
				printf("Erreur! Il n'y a que 30 jours dans ce mois.\n");
			}
		}
 
		/* 
		**  On verrifie que l'année entrée est bien bisextille, 
		**  ainsi on sait si le mois comporte 28 ou 29 jours,
		**	sinon on retroune une erreur.	
		*/
 
		else if ((m==2))
		{
			if ((di==1)) 
			{
				printf("Erreur! Il n'y a que 28 jours dans ce mois.\n");
			}
			else if ((di==0))
			{
				printf("Erreur! Il n'y a que 29 jours dans ce mois.\n");
			}
			else
			{
				printf("Erreur! Il n'y a que 28 ou 29 jours dans ce mois.\n");
			}
		}
 
		/* 
		**  On verrifie que les jours entrés sont compris entre 1 et 31 
		**	sinon on retroune une erreur.	
		*/
 
		else if ((j<0) || (j>31))
		{
			printf("Erreur! Il y au minimum 1 jour et maximum 31 jour dans un mois.\n");
		}
 
		/* 
		**  On verrifie que les jours entrés sont compris entre 1 et 12 
		**	sinon on retroune une erreur.	
		*/
 
		else if ((m<0) || (m>12))
		{
			printf("Erreur! Il n'y a que 12 mois dans une annee.\n");
		}
	}
 
	/* 
	**  On verrifie que l'année entrée est superieur à 1900 
	**	sinon on retroune une erreur.	
	*/
 
	else if (a<1900)
	{
		printf("Erreur! L'annee doit etre au minimum 1900.\n");
	}
 
	/* 
	**  Une fois tout les vérrification faites on affiche le résultat. 	
	*/
 
	else
	{
		printf("%d/%d/%d \n", j,m,a);
	}
 
	system("PAUSE");
	return 0;
}

Merci par avance de votre aide,
Cordialement.

(ps: mon autre pseudo est Oyo mais comme il semble déjà être utilisé ici )