Programmatione en C

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

Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
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 !"
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
LOL

TuRn3r
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
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
Messages postés
15
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006

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
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
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 !"
Messages postés
15
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006

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
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
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 !"
Messages postés
15
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006

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
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
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 !"
Messages postés
15
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006

pourrai tu me dire comment determiner le jour de lafête de paque d'un année?
Merci YOYO


Badramus
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
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 !"
Messages postés
15
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006

Merci YOYO de m'avoir accorder a votre temps


Badramus
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
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 !"
Messages postés
15
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006

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
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
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 !"
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
pour le reste explore
le source "date.h" que tu doit retrouver dans ton compilo

++
___________________________________________________________
Magicalement
Nono
Messages postés
15
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006

je viens d'explorer date.h


Badramus
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
c'est bien

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

___________________________________________________________
Magicalement
Nono
Messages postés
15
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006

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:"
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
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 !"