J'ai besoin de votre aide programme C

3aychouch Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
3aychouch Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai programmée un programme qui affiche le jour d'une date mais, j'ai un problème au niveau du mois février
voila mon programme ;j'ai besoin de votre aide s.v.p.



#include <stdio.h>
#include <stdlib.h>
#define div4(a) (a)/(4)

int mois(int m,int a) // fonction qui retourne les jours des mois
{
int jour;
jour=0;

switch(m)
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10:
case 12: jour=31;break;

case 4 :
case 6 :
case 9 :
case 11: jour=30;break;

case 2 : jour=28;break;

}

return(jour);
}



int valide_date(int jr,int m,int a) // fonction qui controle la validité d'une date
{
int n,datevalide;

n=mois(m,a);


if( a>=1901 && a<=2099 && m>=1 && m<=12 && jr<=n && jr>=1)


{
printf("\a la date est valide\n");
}
else

{ printf("\a la date n'est pas valide \n");

printf("\n Fin...");exit(0);}

return(datevalide);

}



int nb_jour_annee(int a)
{
int locale,nb_jr_annee;

locale = a-1901;

nb_jr_annee = 365*locale + div4(locale);

return(nb_jr_annee);
}



int nb_jour_mois(int m,int a)
{
int k,tt,n,nb_jr_mois;nb_jr_mois=0;
k=mois(2,a);
if( a%4==0)
{ n=1+k;}
else
{ n=k;}
tt=m-1;
switch (tt)
{

case 0: nb_jr_mois=0;break;
case 1: nb_jr_mois=31;break;
case 2: nb_jr_mois=n+31;break;
case 3: nb_jr_mois=30+31+n;break;
case 4: nb_jr_mois=30+2*31+n;break;
case 5: nb_jr_mois=30*2+31*2+n;break;
case 6: nb_jr_mois=30*2+31*3+n;break;
case 7: nb_jr_mois=30*3+31*3+n;break;
case 8 :nb_jr_mois=30*3+31*4+n;break;
case 9:nb_jr_mois= 30*4+31*4+n;break;
case 10:nb_jr_mois= 30*4+31*5+n;break;
default:;
}
return(nb_jr_mois);
}

int nb_jour_ds_mois(int j)
{

int nb_jr_ds_mois;

nb_jr_ds_mois=j-1;


return(nb_jr_ds_mois);
}


void main()
{
int a,j,m,vd;
int x,y,z;
int nbjr,val;



printf("\n Ce programme est permet de connaitre le jour de la date donnee \n ");

printf("\n");
printf("\n dans un intervalle D1 = 1/01/1901 Mardi et D2 = 1/01/2099 \n");
printf("\n");
printf("\n Le TP est elabore par : \n ");
printf("\n");
printf("\t - MOURSLI Mohcine ");
printf("\n");
printf("\t - AL AZOUZI Mostafa ");
printf("\n");
printf("\t\t A.U : 2007/2008 \t ");
printf("\n");
printf("\n Entrer l'annee \n ");
scanf("%d",&a);
printf("\n Entrer le mois \n");
scanf("%d",&m);
printf("\n Entrer le jour \n");
scanf("%d",&j);

if(vd==valide_date(j,m,a))
{

x=nb_jour_annee(a);

y=nb_jour_mois(m, a);

z=nb_jour_ds_mois(j);

nbjr = x+y+z;

val = nbjr%7;

switch(val)
{
case 0 : printf("\n Le jour est : Mardi"); break;
case 1 : printf("\n Le jour est : Mercredi"); break;
case 2 : printf("\n Le jour est : Jeudi"); break;
case 3 : printf("\n Le jour est : Vendredi"); break;
case 4 : printf("\n Le jour est : Samedi"); break;
case 5 : printf("\n Le jour est : Dimanche"); break;
case 6 : printf("\n Le jour est : Lundi"); break;
}
}
printf("%d",y);
printf("\n");
printf("\n Fin de programme .... \n");
printf("\n");
}

2 réponses

mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
vu la longueur de ton programme le mieux pour qu'on puisse t'aidé plus vite c'est que nous donne des indications
quelle erreur ?
compilation ou execution ?
où est cet erreur ?
ou alors aucune erreur mais le programme ne fait pas ce que tu veux dans cas que veux tu faire ?
0
3aychouch Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
erreur au niveau du mois fevrier la case 2 retourne juste 29 jour
0