J'ai besoin de votre aide programme C

Fermé
3aychouch Messages postés 3 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 20 juin 2008 - 18 juin 2008 à 02:25
3aychouch Messages postés 3 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 20 juin 2008 - 18 juin 2008 à 19:18
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");
}
A voir également:

2 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
18 juin 2008 à 05:07
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 mercredi 18 juin 2008 Statut Membre Dernière intervention 20 juin 2008
18 juin 2008 à 19:18
erreur au niveau du mois fevrier la case 2 retourne juste 29 jour
0