Pseudo-code

Résolu
Caine10 Messages postés 2 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 25 novembre 2008 - 21 nov. 2008 à 17:45
Caine10 Messages postés 2 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 25 novembre 2008 - 25 nov. 2008 à 00:30
Coucou, j'ai un petit soucis avec l'éxercice  suivant... j'ai grand besoin d'aide ^_^

"L'utilisateur encode en une seule fois une date sous la forme AAAAMMJJ supposée correcte (donc n pas valider la date). Déterminer et afficher la date correspondant au jour précédent. Procédez à la déclaration des données."

 Valeur introduites                      Résultat à obtenir
          Date                                      Date précédente
     20081212                                       20081211
     20080101                                       20071231

Tout ça en pseudo-code...
J'en suis arriver  la conclusion suivantes, mais doute du résonnement... car les possibilité sont limité à ce qu l'on à vu aux cours... là j'utilise le modulo, mais...
Pouvez-vous me dire si je suis dans l'erreur. Merci d'avance
 
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??> 

Var_name

, Type

, Size

, ----
Date

Jour

Mois

Année

Correct_date

, Nombre entier

Nombre entier

Nombre entier

Nombre entier

Nombre entier

, 8

2

2

4

8

 

 

 

 

 

 

Lire date AAAAMMJJ

Calculer jour = date % 100

Calculer mois = ((date jour) / 100) % 100

Calculer année = (date – ((mois * 100) + jour)) / 10000

 

SI (mois =2) (v)

   ALORS  affecter 28 à jour

        SINON
                   SI (mois 2 et année Modulo 4 0) (v)

                     ALORS  affecter 29 à jour

                  

      SINON

      SI (mois = 1 ou 3 ou 5 ou 7 ou 8 ou 10 ou 12) (v)

                                ALORS  affecter 31 à jour                      

    SINON

               SI (mois = 4 ou 6 ou 9 ou 11) (v)

                 ALORS  affecter 30 à jour

             SINON
SI (jour 1 et mois 1) (v)

                                                 ALORS   calculer  année -1

                                                                  Affecter 12 à mois                               

                                                    SINON

                                                               SI (mois <1 ou >12) (f)

                                                                  ALORS  écrire « erreur de donnée »

                                                                     SINON

                                                                       Calculer correct_date

                                                                       (année * 10000 + ((mois * 100) + jour)) - 1

                                                                      FINSI

                                                 FINSI

                                 FINSI

                      FINSI

           FINSI

FINSI

 

Ecrire correct_date

Fin du programme

3 réponses

uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
24 nov. 2008 à 23:07
Désolé mais j'ai du mal à me familiariser avec ta syntaxe, quelle est la différence par exemple entre % et Modulo ? (c'est pareil, hein)
Enfin bon, vu que tu peux créer tes propres fonctions, autant faire
Lire date AAAAMMJJ
Ecrire jour_precedent(date)

bon.. pour être plus sérieux, moi je m'y prendrais plutôt comme ça :
- même calculs que toi pour récupérer le jour, le mois et l'année
- si le jour est supérieur à 2, bah suffit de soustraire 1 à la date (exemple : 20081103 est bien la date précédant 20081104)
- sinon     - si le mois est 1, tu soustrais 1 à l'année puis tu "colles" les morceaux de texte (en mettant mois 12 et jour 31)
     - sinon
          - tu soustrais 1 au mois
          - si le mois est 2, tu mets jour = 28
          - sinon
               - sile mois est 3, 5, 7, 8, 10 ou 12, tu mets jour = 31
               - sinon tu mets jour = 30

Cordialement, uaip.
3
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
24 nov. 2008 à 23:11
Quelques petites erreurs...
"- le jour est supérieur ou égal"
et à la fin, je sais pas si tu peux concaténer plusieurs vars, mais tu retourne un truc du style (plusieurs syntaxes)
"annee + mois + jour"
$afficher(annee,mois,jour)
afficher "annee . mois . jour"
Bon bref, tu as compris
Bonne chance

Cordialement, uaip.
3
Caine10 Messages postés 2 Date d'inscription mercredi 23 septembre 2009 Statut Membre Dernière intervention 25 novembre 2008
25 nov. 2008 à 00:30
Merci Uaip ^_^  ton résonnement simplifie beaucoup de chose... je vais l'appliquer
3
Rejoignez-nous