Calcul de la date du lendemain
+3
Napoléon
serenere
medch
7 participants
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
Calcul de la date du lendemain
*****************************************************
Ecrire un programme qui calcule la date du lendemain à partir d’une date quelconque saisie à
partir du clavier.
*****************************************************
#include
void main()
{
int j,mm,aaaa;
printf("donner le jour");
scanf("%d",&j);
printf("donner le mois");
scanf("%d",&mm);
printf("donner le annee");
scanf("%d",&
aaaa);
if ((j>28) &&(mm==02))
{ j=0;
mm=mm+1;
aaaa=aaaa;}
if ((j<31) && (mm<12))
{ j=j+1;
mm=mm;
aaaa=aaaa;
printf("la date est %d %d %d",j,mm,aaaa);}
else if ((j<31) && (mm>12))
{ j=j+1;
mm=1;
aaaa=aaaa;
printf("la date est %d %d %d",j,mm,aaaa);}
else if ((j>=31) && (mm<12))
{ j=1;
mm=mm+1;
aaaa=aaaa;
printf("la date est %d %d %d",j,mm,aaaa);}
else if ((j<31) && (mm<12))
{ j=j+1;
mm=mm;
aaaa=aaaa;
printf("la date est %d %d %d",j,mm,aaaa);}
else if ((j>=31)&&(mm>=12))
{ j=1;
mm=1;
aaaa=aaaa+1;
printf("la date est %d %d %d",j,mm,aaaa);}
}
Ecrire un programme qui calcule la date du lendemain à partir d’une date quelconque saisie à
partir du clavier.
*****************************************************
#include
void main()
{
int j,mm,aaaa;
printf("donner le jour");
scanf("%d",&j);
printf("donner le mois");
scanf("%d",&mm);
printf("donner le annee");
scanf("%d",&
aaaa);
if ((j>28) &&(mm==02))
{ j=0;
mm=mm+1;
aaaa=aaaa;}
if ((j<31) && (mm<12))
{ j=j+1;
mm=mm;
aaaa=aaaa;
printf("la date est %d %d %d",j,mm,aaaa);}
else if ((j<31) && (mm>12))
{ j=j+1;
mm=1;
aaaa=aaaa;
printf("la date est %d %d %d",j,mm,aaaa);}
else if ((j>=31) && (mm<12))
{ j=1;
mm=mm+1;
aaaa=aaaa;
printf("la date est %d %d %d",j,mm,aaaa);}
else if ((j<31) && (mm<12))
{ j=j+1;
mm=mm;
aaaa=aaaa;
printf("la date est %d %d %d",j,mm,aaaa);}
else if ((j>=31)&&(mm>=12))
{ j=1;
mm=1;
aaaa=aaaa+1;
printf("la date est %d %d %d",j,mm,aaaa);}
}
medch- Entier Naturel
- Nombre de messages : 16
Localisation : tunis
Réputation : 0
Points : 6236
Date d'inscription : 28/10/2007
Re: Calcul de la date du lendemain
Slt,
Pour repondre a ta question il faut d'abord savoir que pour obtenir la date du lendemain a partir d'une saisie au clavier il faut :
1- Verifier si les chiffre saisies correspondent a une date ou pas si non ton traitement apres n'aura aucun sens, cela peut se faire en ajoutant un bout de code apres la fin de la saisie qui verifie si j est compris entre 1 et 30 dans le cas ou m est
un mois qui contient 30 jours ....
Tu dois distinguer enfin 3 groupes de date :
- Les dates des mois qui finissent par 31
- Les dates des mois qui finissent par 30
- les dates du mois de Fevrier ( tu dois tester si l'année en question est bissextile )
Bon je te laisse le soin de revoir ton code et de me dire si c'est bon ou pas .
RMQ : if ((j<31) && (mm>12))
se test n'est verifier ke si m>12 c'est à dire 13 et plus ?????!!! comment ça se fait a se que je sache il y a seulement 12 mois lol .
J'attends ta reponse.
Bon travail
Pour repondre a ta question il faut d'abord savoir que pour obtenir la date du lendemain a partir d'une saisie au clavier il faut :
1- Verifier si les chiffre saisies correspondent a une date ou pas si non ton traitement apres n'aura aucun sens, cela peut se faire en ajoutant un bout de code apres la fin de la saisie qui verifie si j est compris entre 1 et 30 dans le cas ou m est
un mois qui contient 30 jours ....
Tu dois distinguer enfin 3 groupes de date :
- Les dates des mois qui finissent par 31
- Les dates des mois qui finissent par 30
- les dates du mois de Fevrier ( tu dois tester si l'année en question est bissextile )
Bon je te laisse le soin de revoir ton code et de me dire si c'est bon ou pas .
RMQ : if ((j<31) && (mm>12))
se test n'est verifier ke si m>12 c'est à dire 13 et plus ?????!!! comment ça se fait a se que je sache il y a seulement 12 mois lol .
J'attends ta reponse.
Bon travail
serenere- Entier Naturel
-
Nombre de messages : 23
Age : 38
Localisation : Tunisie
Réputation : 0
Points : 6459
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Calcul de la date du lendemain
Commentaires très pertinents de la part de serenere.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
Je te propose ce programme :
- Code:
#include <iostream>
using namespace std;
int isLeapYear(int year)
{
return ((year % 400 != 0 && year % 4 == 0) || year % 400);
}
int getDaysCount(int month, int year)
{
if (month == 1 || month == 3 || month == 5 ||
month == 7 || month == 8 || month == 10 ||
month == 12)
return 31;
else if (month == 2)
{
return 28 + isLeapYear(year);
}
else return 30;
}
void getDate(int* day, int* month, int* year)
{
cout << "Entrer l'année : ";
cin >> *year;
do
{
cout << "Entrer le mois [1..12] : ";
cin >> *month;
} while (*month < 1 && *month > 12);
int maxDays = getDaysCount(*month, *year);
do
{
cout << "Entrer le jour [1.." << maxDays << "] : ";
cin >> *day;
} while (*day < 1 && *day > maxDays);
}
void nextDay(int* day, int* month, int* year)
{
int maxDays = getDaysCount(*month, *year);
(*day)++;
if (*day > maxDays)
{
*day = 1;
(*month)++;
if (*month > 12)
{
*month = 1;
(*year)++;
}
}
}
int main()
{
int day, month, year;
getDate(&day, &month, &year);
nextDay(&day, &month, &year);
printf("%04d-%02d-%02d\n", year, month, day);
return 0;
}
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6255
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
medch
Essaie de bien choisir les titres des messages que tu postes.
Evite les phrases longues comme:
je me demande si ce programme marche ou nn ...
Mets plûtot
Calcul de la date du lendemain
un titre qui résume le contenu...
Essaie de bien choisir les titres des messages que tu postes.
Evite les phrases longues comme:
je me demande si ce programme marche ou nn ...
Mets plûtot
Calcul de la date du lendemain
un titre qui résume le contenu...
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
medch:
La solution proposée par manianis est en C++, elle utilise des fonctions C.
Et d'après ce que je sais, vous n'avez pas encore étudié les fonctions...
tu peux adapter cette version pour écrire une solution sans Fonctions... OK?
La solution proposée par manianis est en C++, elle utilise des fonctions C.
Et d'après ce que je sais, vous n'avez pas encore étudié les fonctions...
tu peux adapter cette version pour écrire une solution sans Fonctions... OK?
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
manianis:
ce qui me plait toujours dans vos programmes c'est qu'ils sont très élégants !!!
Juste quelques petites erreurs:
lorsqu'on met: 2000/2/28, le programme retourne 2000/3/1 alors que 2000 est une année bissextile, le lendemain c'est 2000/2/29.
Aussi, il manque un ptit contrôle sur le mois qui doit être entre 1 et 12.
Encore une fois - merci pour l'effort !!!
ce qui me plait toujours dans vos programmes c'est qu'ils sont très élégants !!!
Juste quelques petites erreurs:
lorsqu'on met: 2000/2/28, le programme retourne 2000/3/1 alors que 2000 est une année bissextile, le lendemain c'est 2000/2/29.
Aussi, il manque un ptit contrôle sur le mois qui doit être entre 1 et 12.
Encore une fois - merci pour l'effort !!!
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
je veux savoir comment tester une variable soit un entier ou non.
suneddine- Nombre Réel
-
Nombre de messages : 730
Age : 39
Localisation : tunisie
Réputation : 5
Points : 6322
Date d'inscription : 11/11/2007
Feuille de personnage
Capacité linguistique:
(995/1000)
Re: Calcul de la date du lendemain
mosa a écrit:je veux savoir comment tester une variable soit un entier ou non.
mosa:
Si c'est un autre sujet, poste-le séparément.
C'est pas difficile de vérifier si une variable contient un réel ou un entier.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
Merci, oui en effet j'ai oublié d'écrire year % 400 == 0 :Admin a écrit:...
Juste quelques petites erreurs:
lorsqu'on met: 2000/2/28, le programme retourne 2000/3/1 alors que 2000 est une année bissextile, le lendemain c'est 2000/2/29.
- Code:
int isLeapYear(int year)
{
return ((year % 400 != 0 && year % 4 == 0) || year % 400 == 0);
}
Admin a écrit:
Aussi, il manque un ptit contrôle sur le mois qui doit être entre 1 et 12.
Encore une fois - merci pour l'effort !!!
Non, le controle est déjà fait dans la fonction getDate. Je ne l'ai pas reproduit dans la fonction nextYear pour la simple raison que les erreurs peuvent provenir uniquement de la saisie de l'utilisateur (au moins dans ce programme).
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6255
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
c'est pas un autre sujet mais on veux tester si l'année saisie est un entierAdmin a écrit:mosa a écrit:je veux savoir comment tester une variable soit un entier ou non.
mosa:
Si c'est un autre sujet, poste-le séparément.
C'est pas difficile de vérifier si une variable contient un réel ou un entier.
suneddine- Nombre Réel
-
Nombre de messages : 730
Age : 39
Localisation : tunisie
Réputation : 5
Points : 6322
Date d'inscription : 11/11/2007
Feuille de personnage
Capacité linguistique:
(995/1000)
Re: Calcul de la date du lendemain
A ce que je connais le C ne nécessite pas ce genre de test car le type est déterminé lors de la définition des variables :
- Code:
int a;
float b;
- Code:
a = sqrt(25); // le résultat sera un entier bien que le compilateur
// puisse générer des avertissements (Warnings)
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6255
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
aaah, barakallah fik manianis
suneddine- Nombre Réel
-
Nombre de messages : 730
Age : 39
Localisation : tunisie
Réputation : 5
Points : 6322
Date d'inscription : 11/11/2007
Feuille de personnage
Capacité linguistique:
(995/1000)
Re: Calcul de la date du lendemain
fik aussi akhi, A votre servicemosa a écrit:aaah, barakallah fik manianis
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6255
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
mosa a écrit:je veux savoir comment tester une variable soit un entier ou non.
il faut dire qu'il est aussi possible de tester si une valeur est entière ou avec virgule flottante... Je vais la poster comme nouveau sujet.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
Pour être précis Nabil vous parlez là de variables flottantes ?
Exemple :
5.0 est considérée comme valeur entière
Exemple :
5.0 est considérée comme valeur entière
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6255
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
Une version SANS FONCTIONS du programme Calcul de la date du Lendemain
(Compilé et testé sous Visual Studio 6.0)
(Compilé et testé sous Visual Studio 6.0)
- Code:
#include
void main()
{
/********************* les variables *****************/
int an1, mois1, jour1;
int estBis;
int maxJours;
int an2, mois2, jour2;
/********************* saisie de la date ***************/
printf("SAISIE D'UNE DATE: \n\n");
printf("\tANNEE = "); scanf("%i",&an1);
printf("\tMOIS = "); scanf("%i",&mois1);
printf("\tJOUR = "); scanf("%i",&jour1);
/********************* contrôle de la date *********** */
printf("\n");
/* test sur Année */
if (an1<=0)
{
printf("\t>> Erreur: Annee negative.\n");
return;
}
/* test sur Mois */
if (mois1<1 || mois1>12)
{
printf("\t>> Erreur: Mois invalide.\n");
return;
}
/* test sur Jours du Mois */
/* mois = 31 jours */
if (mois1==1 || mois1==3 || mois1==5 || mois1==7 ||
mois1==8 || mois1==10 || mois1==12)
{
maxJours = 31;
if (jour1<1 || jour1>31)
{
printf("\t>> Erreur: Jour invalide (mois de 31 jours).\n");
return;
};
}
/* mois = 28/29 jours */
else
if (mois1==2)
{
estBis = (an1%4==0 && an1%100!=0) || (an1%400==0);
maxJours = 28+estBis;
if (jour1<1 || jour1>maxJours)
{
printf("\t>> Erreur: Jour invalide (mois de %i jours).\n",maxJours);
return;
};
}
/* mois = 30 jours */
else
{
maxJours = 30;
if (jour1<1 || jour1>30)
{
printf("\t>> Erreur: Jour invalide (mois de 30 jours).\n");
return;
};
}
/********************* Calcul date Lendemain *********/
an2 = an1;
mois2 = mois1;
jour2 = jour1;
if (jour1 < maxJours)
jour2 = 1 + jour1;
else
{
jour2 = 1;
mois2 = 1 + mois1;
if (mois2 > 12)
{
mois2 = 1;
an2 = 1 + an1;
}
}
/********************* Affichage de la date Lendemain *****/
printf("DATE DU LENDEMAIN \n\n");
printf("\tANNEE = %i\n", an2);
printf("\tMOIS = %i\n", mois2);
printf("\tJOUR = %i\n", jour2);
}
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
nabiL: il est un peu long, mais je crois que c'est du à l'absence des fonctions!
Rectif: #include <stdio.h>
Rectif: #include <stdio.h>
informix- Nombre Rationnel
- Nombre de messages : 399
Réputation : 4
Points : 6526
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Calcul de la date du lendemain
Trés bonne adapation. Félicitations, Nabil.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6255
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Calcul de la date du lendemain
la version de manianis paraît plus élégante
mais là, sans fonctions, on se sent étouffé
mais là, sans fonctions, on se sent étouffé
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7254
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Sujets similaires
» calcul d'une limite
» logarithme + calcul
» Calcul d'une intégrale
» Calcul de la limite d'une suite Sn=1/0!+1/1!+...+1/n!
» Méthode/calcul analytique...
» logarithme + calcul
» Calcul d'une intégrale
» Calcul de la limite d'une suite Sn=1/0!+1/1!+...+1/n!
» Méthode/calcul analytique...
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum