cs_badramus
Messages postés15Date d'inscriptionsamedi 6 mai 2006StatutMembreDernière intervention15 mai 2006
-
9 mai 2006 à 13:13
cs_magma -
10 mai 2006 à 14:58
bonjour tout le monde j'aimerais que vous m'aidez pour un projet à rendre le 15 mai
le projet presenté ci dessous
1 pour une date donnée (jj/mm/aaaa) determiner le jour (lundi, mardi,... , dimanche)
2 pour une année donnée determiner la date de la fete de paques
3 pour un nombre de jour donnée (>0) determiner la date (jour/mois/année).on prend comme point de départ le 1er janvier 1960.
je compte sur la communauté merci
cs_badramus
Messages postés15Date d'inscriptionsamedi 6 mai 2006StatutMembreDernière intervention15 mai 2006 9 mai 2006 à 14:19
Au faite le programme doit exécuter les trois tâches suivante:
1 pour une date donnée (jj/mm/aaaa) determiner le jour (lundi, mardi,... , dimanche)
2 pour une année donnée determiner la date de la fete de paques
3 pour un nombre de jour donnée (>0) determiner la date (jour/mois/année).on prend comme point de départ le 1er janvier 1960.
Sur le site j'ai qu'un programme qui determine le jour pour une année ,un mois et une date donné.
Comment pourrai-je ajouter un programme qui permet de determiner la date de la fête de pâque.
voici le code source permettant de determiner le jour.
#include <stdio.h>
#include <conio.h>
void erreurs (void);
int cherche_jour (int jour, int _code_mois);
int cherche_mois (int mois_n, int bisextile, int _code_annee);
int cherche_annee (int annee, int avant);
void erreurs ()
{
puts ("<<< DATE NON VALIDE >>>");
}
int cherche_jour (int jour, int _code_mois)
{
int tab_jour[5][7] = {{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,0,0,0,0}},
tab_code_jour[7][7] = {{5,6,0,1,2,3,4},{6,0,1,2,3,4,5},{0,1,2,3,4,5,6},
{1,2,3,4,5,6,0},{2,3,4,5,6,0,1},{3,4,5,6,0,1,2},{4,5,6,0,1,2,3}},
ligne, colonne;
ligne colonne 0;
while (tab_jour[ligne][colonne] != jour)
{ if (colonne 6) { colonne 0; ligne ++; }
else colonne ++;
}
ligne = _code_mois;
return (tab_code_jour[ligne][colonne]);
}
int cherche_mois (int mois_n, int bisextile, int _code_annee)
{
int //tab_mois1[3][7] = {{5,7,3,6,9,4,10},{0,2,11,0,12,7,0},{0,0,0,0,0,1,0}},
tab_mois1[3][7] = {{5,2,3,6,9,1,10},{0,8,11,0,12,7,0},{0,0,0,0,0,4,0}},
//tab_mois0[3][7] = {{5,7,2,6,9,4,1},{0,0,3,0,12,7,10},{0,0,0,11,0,0,0}},
tab_mois0[3][7] = {{5,8,2,6,9,4,1},{0,0,3,0,12,7,10},{0,0,11,0,0,0,0}},
tab_code_mois[7][7] = {{1,2,3,4,5,6,0},{2,3,4,5,6,0,1},{3,4,5,6,0,1,2},
{4,5,6,0,1,2,3},{5,6,0,1,2,3,4},{6,0,1,2,3,4,5},{0,1,2,3,4,5,6}},
ligne, colonne;
ligne colonne 0;
if (bisextile == 1)
while (tab_mois1[ligne][colonne] != mois_n)
{ if (colonne 6) { colonne 0; ligne ++; }
else colonne ++;
}
else
while (tab_mois0[ligne][colonne] != mois_n)
{ if (colonne 6) { colonne 0; ligne ++; }
else colonne ++;
}
ligne = _code_annee;
return (tab_code_mois[ligne][colonne]);
}
int cherche_annee (int annee, int avant)
{
int tab_centaines[7][5] = { {0,7,14,17,21},{1,8,-1,-1,-1},{2,9,-1,18,22},
{3,10,-1,-1,-1},{4,11,-1,19,23},{5,12,16,20,24},{26,13,-1,-1,-1}},
tab_dizaines[18][7] = {{0,1,2,3,-1,4,5},{6,7,-1,8,9,10,11},
{-1,12,13,14,15,-1,16},{17,18,19,-1,20,21,22},
{23,-1,24,25,26,27,-1},{28,29,30,31,-1,32,33},
{34,35,-1,36,37,38,39},{-1,40,41,42,43,-1,44},
{45,46,47,-1,48,49,50},{51,-1,52,53,54,55,-1},
{56,57,58,59,-1,60,61},{62,63,-1,64,65,66,67},
{-1,68,69,70,71,-1,72},{73,74,75,-1,76,77,78},
{79,-1,80,81,82,83,-1},{84,85,86,87,-1,88,89},
{90,91,-1,92,93,94,95},{-1,96,97,98,99,-1,-1}},
tab_code_annee[7][7] = {{6,0,1,2,3,4,5},{5,6,0,1,2,3,4},{4,5,6,0,1,2,3},{3,4,5,6,0,1,2},
{2,3,4,5,6,0,1},{1,2,3,4,5,6,0},{0,1,2,3,4,5,6}},
ligne, colonne, centdiz;
ligne colonne 0;
centdiz = 0; // variable travaillant avec les tableaux des centaines et
// des dizaines. Variable prenant en 1er les 2 chiffres des
// centaines puis en 2nd les dizaines de l'annee recherchee
if (avant 1) tab_centaines[1][2] 15;
else tab_centaines[4][2] = 15;
centdiz = annee / 100;
while (tab_centaines[ligne][colonne] != centdiz)
{ if (colonne 4) { colonne 0; ligne ++; }
else colonne ++;
}
avant = ligne; ligne colonne 0;
centdiz = annee % 100;
while (tab_dizaines[ligne][colonne] != centdiz)
{ if (colonne 6) { colonne 0; ligne ++; }
else colonne ++;
}
ligne = avant;
return (tab_code_annee[ligne][colonne]);
}
void affiche_resultat (int code_jour, int jour_n, int mois_n, int annee)
{
// initialise les tableaux de mois et de jours
char *mois[12] = {"janvier","fevrier","mars","avril","mai","juin","juillet",
"aout","septembre","octobre","novembre","decembre"},
*jour[7] = {"lundi","mardi","mercredi","jeudi","vendredi","samedi",
"dimanche"};
printf ("%s %d %s %d", jour[code_jour], jour_n, mois[mois_n -1], annee);
}
main ()
{
char choix = ' ';
int jour_n, mois_n, annee, bisextile, avant, validite, code_jour,
code_mois, code_annee;
long controle;
jour_n mois_n annee = 0; // initialise les variables de date a 0 controle avant -1 ; // Test la date pour savoir si elle est avant
// le 4.10.1582 ou apres le 15.10.1582
bisextile = 0; // Test l'annee, pour savoir si elle est bisextile ou non
validite = 0; // Test la validité de la date saisie par l'utilisateur code_jour code_mois code_annee = 0; // Initialise les variables
// permettant de definir le jour precis d'une date
puts ("\n\t\t\tBienvenue sur le calendrier perpetuel.\n\n Vous allez "
"enfin connaitre le jour correspondant a la date que vous saisirez."
"\n\n\n\tAttention a l'annee que vous entrerez, ce calendrier perpetuel\n"
"\t prend en compte une echelle allant de l'an 0 a l'an 2499\n\n\n\n");
while (1)
{
do
{
printf ("\nEntrez la date (jj/mm/aaaa): ");
scanf ("%d/%d/%d",&jour_n, &mois_n, &annee);
// Test de la bisextilité de l'année if ( (annee % 100 0 && annee % 400 0) || (annee % 100 != 0 && annee % 4 == 0) )
bisextile = 1 ;
else
bisextile = 0 ;
// Test de la validité de la date entrée par l'utilisateur
if ( (jour_n < 1 || jour_n > 31) || (mois_n < 1 || mois_n > 12) ||
(annee < 0 || annee >= 2500) || (jour_n > 30 && (mois_n 4 || mois_n 6 || mois_n 9 || mois_n 11)) || (mois_n 2 && (jour_n > 29 || (bisextile 0 && jour_n > 28))) )
{
validite = 1; // DATE NON VALIDE
erreurs ();
}
else validite = 0; // Date Valide
} while (validite);
controle = (annee * 10000) + (mois_n * 100) + jour_n ; // sonde de contrôle
printf ("controle = %u\n", controle);
// contrôle de changement de calendrier if (controle <15821004) avant 1;
if (controle > 15821015) avant = 0;
if (controle > 15821004 && controle <= 15821015)
puts ("Desole! Le jour est impossible a determiner pour cette date.");
else
{
code_annee = cherche_annee (annee, avant);
code_mois = cherche_mois (mois_n, bisextile, code_annee);
code_jour = cherche_jour (jour_n, code_mois);
affiche_resultat (code_jour, jour_n, mois_n, annee);
}
puts ("\n\n\t\tS: Saisir une nouvelle date\n\t\tQ: Quitter l'application");
printf ("\n\t\t\tVotre Choix........: ");
choix = getche (); if (choix 'S' || choix 's') puts (" "); // printf ("\nla touche tapee est S ou s, normalement: %c\n", choix);
else break; // { printf ("\nla touche tapee est: %c\n", choix); break; }
}
printf ("\n\n\tAppuyer sur une touche pour quitter........");
getch ();
}
Merci
Badramus
Vous n’avez pas trouvé la réponse que vous recherchez ?
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 9 mai 2006 à 14:32
On peut pas faire le boulot de qq'un d'autre. Donc on peut pas te former (surtout en si peu de temps à moins que tu planches sur le c tous les jours à fond).
On ne peut donc pas non plus faire le boulot à ta place parce que tout simplement si ta formation a pas été efficace c'est que qq'un a raté qq chose. De plus, tu n'aurais rien appris, alors que a t'y prendre au dernier moment, tu t'es mis dans la m.... tout seul.
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 9 mai 2006 à 14:47
Bien entendu que t'es obligé de faire le boulot.
Vu la situation, ce que je te conseillerai, c'est de récupérer des codes (ce que tu as déjà fait on dirait) en rapport avec ce que tu dois faire et de te pencher dessus sérieusement avec ton cours sour les yeux.
Et si tu as des questions (précises) tu as le forum pour t'aider.
YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 9 mai 2006 à 15:25
Tu peux m'envoyer des messages privés (bouton MP au-dessus d'un de mes messages du forum) sur cppfrance si tu veux.
PS : tu peux me tutoyer ya pas de souci, parce que là ça me fout un coup de vieux c'est bizarre LOL.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
cs_badramus
Messages postés15Date d'inscriptionsamedi 6 mai 2006StatutMembreDernière intervention15 mai 2006 10 mai 2006 à 10:57
Bonjour
voici le programme que j'ai pu faire mais ça ne marche comme je le souhaite. veuillez m'aidez a reoudre ce problème.
voici le programme
// naissance.cpp : Defines the entry point for the console application.
//
#include
#include
#include
#include
int annee,mois,jour,correctif,difference,n;
char saisie[5];
bool correct;
int tab_aux[12];
int tab_duree [12]={31,28,31,30,31,30,31,31,30,31,30,31};
char calendrier[13][10]={"janvier","fevrier","mars","avril","mai","juin",
"juillet","aout","septembre","octobre","novembre","decembre"};
char semaine[8][10]={"lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"};
int main(int argc, char* argv[])
{
do
{
correct=true;
printf("Entrez une annee (comprise entre 1960 et 2099):");
scanf("%d",&annee);
if(n>4||annee==0||annee2099)//eviter une saisie
{
correct=false;
printf("Recommencez!");
}
} while(correct==false);
if((annee-1960)%4==0) //savoir si l'annee est bissextile
correctif=1;
else
correctif=0;
tab_duree[1]=28+correctif;
do
{
correct=true;
printf("Entrez un mois (compris entre 1 et 12):");
scanf("%d",&mois)
}
while(correct==false);
do
{
correct=true;
printf("Entrez un jour (compris entre 1 et 31):");
scanf("%d",&jour)
cin>>saisie;
int n=strlen(saisie);
jour=atoi(saisie);
if(n>2||jourtab_duree[mois-1]) //éviter une saisie incorrecte
{
correct=false;
if(mois!=2)
printf("Recommencez!Le mois de ",calendrier[mois-1]," compte ",tab_duree[mois-1]," jours",endl);
if(mois==2)
{
if(correctif==0)
printf("Recommencez!Le mois de fevrier d'une annee non bissextile compte 28 jours");
else
printf("Recommencez!Le mois de fevrier d'une annee bissextile compte 29 jours");
}
}
} while(correct==false);
// référence choisie : l'année 2099 qui est bissextile et dont le premier
// janvier tombait un samedi.On pourra vérifier!
// ****** premiére étape******
// Déterminer le jour de la semaine correspondant au premier janvier d'une
// année quelconque comprise entre 1960 et 2099
difference=2099-annee;
int jr; //jr=1 correspond au lundi,jr=2 au mardi...
int decalage;
decalage=difference+floor(difference/4); //tenir compte du nombre d'annees bissextiles
jr=6-decalage%7; //6 pour le samedi de l'an 2099
if(jr==0)
jr=7;
printf("le premier janvier de l'annee que vous avez entrer etait un:"