Calcul de la date du lendemain

Page 1 sur 2 1, 2  Suivante

Voir le sujet précédent Voir le sujet suivant Aller en bas

Calcul de la date du lendemain

Message par medch le Ven 23 Nov - 23:35

*****************************************************
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>2Cool &&(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
Nouveau membre
Nouveau membre

Messages : 16
Inscrit le : 28 Oct 2007
Localisation : tunis

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par serenere le Sam 24 Nov - 9:44

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

serenere
Nouveau membre
Nouveau membre

Sexe:FémininTaureauTigre
Messages : 23
Inscrit le : 19 Mar 2007
Age : 22
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par nabiL le Sam 24 Nov - 10:58

Commentaires très pertinents de la part de serenere.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par manianis le Sam 24 Nov - 18:12

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
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par nabiL le Sam 24 Nov - 18:34

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...
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par nabiL le Sam 24 Nov - 18:37

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?
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par nabiL le Sam 24 Nov - 18:47

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. Smile

Encore une fois - merci pour l'effort !!!
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par mosa le Sam 24 Nov - 20:32

je veux savoir comment tester une variable soit un entier ou non.

mosa
Modérateur
Modérateur

Sexe:MasculinScorpionBuffle
Messages : 636
Inscrit le : 11 Nov 2007
Age : 23
Localisation : los angeles

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par nabiL le Sam 24 Nov - 21:21

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.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par manianis le Sam 24 Nov - 22:11

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.

Merci, oui en effet j'ai oublié d'écrire year % 400 == 0 :
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. Smile
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
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par mosa le Sam 24 Nov - 22:15

Admin 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.

c'est pas un autre sujet mais on veux tester si l'année saisie est un entier

mosa
Modérateur
Modérateur

Sexe:MasculinScorpionBuffle
Messages : 636
Inscrit le : 11 Nov 2007
Age : 23
Localisation : los angeles

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par manianis le Sam 24 Nov - 22:22

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;

a est un entier même si on fait :
Code:
a = sqrt(25); // le résultat sera un entier bien que le compilateur
  // puisse générer des avertissements (Warnings)

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par mosa le Sam 24 Nov - 22:27

aaah, barakallah fik manianis

mosa
Modérateur
Modérateur

Sexe:MasculinScorpionBuffle
Messages : 636
Inscrit le : 11 Nov 2007
Age : 23
Localisation : los angeles

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par manianis le Sam 24 Nov - 22:30

mosa a écrit:aaah, barakallah fik manianis

fik aussi akhi, A votre service

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: Calcul de la date du lendemain

Message par nabiL le Sam 24 Nov - 22:49

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.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivante

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum