IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

algo pour donner la date du lendemain.


Sujet :

Algorithmes et structures de données

  1. #21
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    Salut,

    A priori tu peux mettre qu'une valeur par case en Java, mais tu peux faire un truc de ce style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int Mois= ...;
    int switchValue = 0;
    if (Mois= 1 || Mois= 3 || Mois=5...) { 
    switchValue = 1;
    }
    if (Mois= 4 || Mois= 6 || Mois=9...) { //pour les mois de 30 jours
    switchValue = 2;
    }
    if(Mois=2) {switchValue=3}
     
    switch (switchValue) {
    case 1: // trucs à faire pour les mois de 31 jours;
    case 2: // trucs à faire pour les mois de 30 jours;
    case3: //Fevrier
    @+.

  2. #22
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu peux aussi faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    case 1 :
    case 3 :
    case 5 :
    ...
      Truc à faire pour les mois de 31 jours;
      break;
    case 2 :
      Truc à faire pour février
      break;
    case 4 :
    case 6 :
    ...
    Par ailleurs, il est de loin préférable d'éviter la duplication de code dans les conditionnelles (quitte à avoir des conditions complexes : les commentaires sont faits pour ça) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     cas 02:
       Si (a mod 4 == 0 et a mod 100 != 0) ou (a mod 400 == 0) alors // bissextile
         29 jours
       Sinon // non-bissextile
         28 jours
    est plus lisible que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     cas 02:
       T<-- reste (a/4)
       si T=0 alors
         S<-- reste (a/100)
         si S=0 alors
           D<-- reste (a/400)
           si D=0 alors
             29 jours
           sinon
             28jours
           fin si
         sinon
           29jours
         fin si
       sinon
         28jours
       fin si
    --
    Jedaï

  3. #23
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    d'accord merci.

    Justement j'avais un peut de mal pour fevrier avec ta methode je vais moins lutter!!

  4. #24
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut le lendemain
    #include <iostream>
    class Date
    {
    private:
    int jour;
    int mois;
    int an;
    public:
    // constructeur
    Date (int j,int m,int a)
    {
    jour=j;
    mois=m;
    an=a;
    }
    // Affiche la date
    void Show()
    {
    std::cout<<"\n"<<jour<<":"<<mois<<":"<<an<<"\n";
    }
    // test année bissextile
    bool AnneeBissextile ()
    {
    if (!an%400) return true;
    if (!an%100) return false;
    if (!an%4) return true;
    return false;
    }
    // Calcule si fin d'année
    bool FinAnnee ()
    {
    return (mois==12)&&(jour==31);
    }

    bool FinMois ()
    {
    switch (mois)
    {
    case 1:
    return jour==31;
    case 2:
    return AnneeBissextile()?jour==29:jour==28;
    case 3:
    return jour==31;
    case 5:
    return jour==31;
    case 7:
    return jour==31;
    case 8:
    return jour==31;
    case 10:
    return jour==31;
    case 12:
    return jour==31;
    default:
    return jour==30;
    }
    }

    Date Lendemain ()
    {
    if (FinAnnee()) return Date(1,1,an+1);
    else if (FinMois()) return Date(1,mois+1,an);
    return Date(jour+1,mois,an);
    }

    };



    int main()
    {
    Date D1(31,12,2006);
    D1.Lendemain().Show();
    Date D2(30,11,2006);
    D2.Lendemain().Show();
    Date D3(3,11,2006);
    D3.Lendemain().Show();

    return 0;
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/09/2014, 21h43
  2. Réponses: 12
    Dernier message: 14/10/2011, 21h52
  3. [Conception] Additionner le nombre de jours pour donner une date
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/11/2006, 09h03
  4. Algo pour écrire un chiffre
    Par Skyw4lKR dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 11/08/2004, 13h32
  5. Réponses: 7
    Dernier message: 13/12/2003, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo