Bonjour à tous,
voilà quelque temps que je bosse sur mon devoir qui me demande d'écrire un programme qui affiche le jour d'une date saisie par l'utilisateur.
Alors là, j'ai réussi à écrire un petit truc qui fonctionne, mais avec énormément d'imperfections.
J'ai utilisé la documentation du site "http://www.univ-rouen.fr/LMRS/Vulgar...rier/jour.html" pour écrire mon programme.
Le truc qui me plais pas, est que le programme calcul quand même si la date saisie est fausse
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
 
#include<stdio.h>
#include<stdlib.h>
int main()
{
    /*Déclaration des variables*/
    int j,jsauv,c,m,msauv,a,asauv,abi;
 
 
    //Saisie de la date par l'utilisateur
    printf("Veuillez saisir la date : le jour(jj), le mois(mm) et l'année(aaaa)\n");
 
 
 
    printf("\nVeuillez saisir le jour : ");
    scanf("%d",&j);
    while((j<1)||(j>31))
    jsauv=j;
    printf("\nVeuillez saisir le mois : ");
    scanf("%d",&m);
    while((m<1)||(m>12))
    msauv=m;
    printf("\nVeuillez saisir l'année : ");
    scanf("%d",&a);
    asauv=a;
    if(a%4==0||a%400==0)
    {
        printf("\n%d est une annee bissextile, Attention le mois de Février comporte 29 jours\n",asauv);
        abi=1;
    }
		else
		{
			if(a%100 != 0)
				printf("\n%d n'est pas une annee bissextile, Attention le mois de Février comporte 28 jours\n",asauv);
				abi=0;
		}
		if((abi==1)&&(j>29))
 
        printf("\n ERREUR, cette date n'existe pas");
 
        else
        {
            if((abi=0)&&(j>28))
            printf("\n ERREUR, cette date n'existe pas");
 
        }
 
 
 
 
 
    c=(14-m)/12;
    a=a-c;
    m=m+12*c-2;
    //j = ( jour + a + a/4 - a/100 + a/400 + 31m/12 ) mod 7
 
    j=(j+a+a/4-a/100+a/400+((31*m)/12))%7;
    switch(j)
    {
        case 0:
        printf("le %d/%d/%d est un Dimanche",jsauv,msauv,asauv);
        break;
        case 1:
        printf("le %d/%d/%d est un Lundi",jsauv,msauv,asauv);
        break;
        case 2:
        printf("le %d/%d/%d est un Mardi",jsauv,msauv,asauv);
        break;
        case 3:
        printf("le %d/%d/%d est un Mercredi",jsauv,msauv,asauv);
        break;
        case 4:
        printf("le %d/%d/%d est un Jeudi",jsauv,msauv,asauv);
        break;
        case 5:
        printf("le %d/%d/%d est un Vendredi",jsauv,msauv,asauv);
        break;
        case 6:
        printf("le %d/%d/%d est un Samedi",jsauv,msauv,asauv);
        break;
 
    }
 
 
 
}
En gros j'aimerai épurer ce programme, et qu'il affiche juste le nécessaire, et aussi qu'il demande de ressaisir lorsqu'une donnée saisie est fausse.
l'instruction "while" est-elle bien appropriée. Si c'est l'instruction appropriée, quelle est la syntaxe correct pour que ça redemande la saisie si l'entrée saisie est fausse.
Et aussi il affiche n'importe quoi ! jsauv et msauv ont une valeur complètement loufoque?

MERCI de l'aide que vous m'apporterez.