Programmatione en C

cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 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

Badramus

23 réponses

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
9 mai 2006 à 13:50
LOL !!! Y en a qui prenne vraiment les autres pour des billes.
Si tu veux être aidé va falloir payer ! :D

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
9 mai 2006 à 13:55
LOL

TuRn3r
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
9 mai 2006 à 14:12
gogo msdn
CDate
ou autre classe encore plus bas niveau

sinon,
cherche dans le site, et pose question précise sur code existant

Ciao

___________________________________________________________
Magicalement
Nono
0
cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
9 mai 2006 à 14:23
Une petite question tout de même Badramus, tu as déjà programmé (en C ou autre) ?

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 mai 2006
9 mai 2006 à 14:27
Non YOYO, je suis à ma prémière formation en C. Si vous pouvez m'aidez, aidez moi svp car c'est urgent.
Merci


Badramus
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
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 !"
0
cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 mai 2006
9 mai 2006 à 14:35
Voilà je compte chercher moi même a connaitre. Jene suis qu'n debutant.mais je suis obligé de faire letravailque medemande mon prof


Badramus
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
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 !"
0
cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 mai 2006
9 mai 2006 à 14:50
pourrai tu me dire comment determiner le jour de lafête de paque d'un année?
Merci YOYO


Badramus
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
9 mai 2006 à 14:55
J'ai trouvé un pdf sur internet expliquant comment peut se calculer le jour de pâques (j'ai pas vérifié si ça fonctionnait).Voilà le lien :
http://www.col-camus-soufflenheim.ac-strasbourg.fr/telech/PAQUES.pdf

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 mai 2006
9 mai 2006 à 15:02
Merci YOYO de m'avoir accorder a votre temps


Badramus
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
9 mai 2006 à 15:10
De rien et bon courage parce que t'as du pain sur la planche.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 mai 2006
9 mai 2006 à 15:20
pourraije avoir votre mail privé. car depuis que je suis sur ce site j'ai encore rencontré une personne qui dois discute avec moi de la sorte.






Merci YOYO


Badramus
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
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 !"
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
9 mai 2006 à 15:39
pour le reste explore
le source "date.h" que tu doit retrouver dans ton compilo

++
___________________________________________________________
Magicalement
Nono
0
cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 mai 2006
9 mai 2006 à 15:55
je viens d'explorer date.h


Badramus
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
9 mai 2006 à 15:58
c'est bien

donc tu as résolu ton souci de jour à afficher si ce n'était fait plus haut.

___________________________________________________________
Magicalement
Nono
0
cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 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:"
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
10 mai 2006 à 11:03
Tu peux pas donner plus de détails sur ce qui ne va pas stp.
Parce que se taper le code du début à la fin ça demande quand même du temps.

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
Rejoignez-nous