Partage
  • Partager sur Facebook
  • Partager sur Twitter

condition if

Sujet résolu
Anonyme
    19 janvier 2020 à 15:22:19

    Bonjour, 

    j'ai fais un programme qui donne l'heure dans une seconde 

     #include <stdio.h> 
    
     int main()
     {
     
     int h = 23;
     int m = 59;
     int s = 59;
    
     
     printf("L’heure actuelle est : %dh%dm%ds\n",h,m,s);
    
     s = s + 1;
    
     if(s == 60) 
     {
    
     s = 0;
     m = m + 1;
    
          if(m == 60) 
          {
     
           m = 0;
           h = h + 1;
    
              if(h == 24) 
              {
     
               h = 0;
              }
          }
     }
     printf("il sera :%dh%dm%ds dans une seconde\n",h,m,s);
    
     
     return 0;
     }
    

    j'aimerai savoir si c'est possible de faire maintenant pour "la seconde d'avant" en gros pour connaitre l'heure une seconde plus tôt. 

    -
    Edité par Anonyme 19 janvier 2020 à 22:27:00

    • Partager sur Facebook
    • Partager sur Twitter
      19 janvier 2020 à 16:30:24

      Et pourquoi ne serait-ce pas possible?
      • Partager sur Facebook
      • Partager sur Twitter
        19 janvier 2020 à 17:38:04

        @zoup:
        Très bonne technique ...
        On soustrait 1 aux secondes et si on arrive à -1, on met 59 et on fait de même pour les minutes et les heures.
        Je suggère d'ajouter 60 quand on diminue et soustraire 60 quand on augmente. Ce sera utilile pour la suite ...
        Petit défi: comment ajouter plusieurs secondes?
        Astuce: utiliser modulo (%) et division (/) et une variable supplémentaire.
        Ça se gâte un peu si on veut soustraire plusieurs secondes.
        Suggestion: mets un espace entre les secondes, minutes et heures.
        Comment ferais-tu pour afficher dans le format 00:00:00 ?
        • Partager sur Facebook
        • Partager sur Twitter

        Le Tout est souvent plus grand que la somme de ses parties.

        Anonyme
          19 janvier 2020 à 18:09:03

          bonjour

          @PierrotLeFou merci l'explication, mais j'ai un problème pour les heures piles,voilà le code:

          #include <stdio.h>
           
          int main()
          {
           
          int h = 00;
          int m = 00;
          int s = 00;
          
           
          printf("L’heure actuelle est : %dh%dm%ds\n",h,m,s);
           
          s = s - 1;
           
          if(s == 59 )
          {
           
          s = 0;
          m = m + 1;
           
               if(m == 59)
               {
           
                m = 0;
                h = h - 1;
           
                   if(h == 24)
                   {
           
                    h = 0;
                   }
               }
          }
          printf("il etais :%dh%dm%ds une seconde avant\n",h,m,s);
           
           
          return 0;
          }

          pour 23:00:00 ca mes : 23:0:-1 c'est peut être par rapport au s-1 nn

          -
          Edité par Anonyme 19 janvier 2020 à 18:10:26

          • Partager sur Facebook
          • Partager sur Twitter
            19 janvier 2020 à 18:31:24

            Hello,

            Ah oui, tu as un problème: s vaut 0 ligne 8, -1 lors du test ligne 15. Si tu écrivais if(s<0) ça irait mieux. Attention, le reste du code est tout faux.

            Edit: à propos du titre: une boucle if, ça n'existe pas. Des boucles for, while et do while, oui. Des if imbriqués, oui. Des boucles if, non.

            -
            Edité par edgarjacobs 19 janvier 2020 à 20:27:51

            • Partager sur Facebook
            • Partager sur Twitter

            On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

              19 janvier 2020 à 19:25:12

              Je ne savais pas que 0 - 1 donnait 59?
              if(s < 0){
              s = s+ 60;
              ... et tu diminues les minutes etc.
              }
              • Partager sur Facebook
              • Partager sur Twitter

              Le Tout est souvent plus grand que la somme de ses parties.

              Anonyme
                19 janvier 2020 à 22:22:21

                bonjour,

                @edgarjacobs Merci, tu as raison j'ai du coup rectifié le reste du code et concernant le titre désolé, je viens de le changer

                @PierrotLeFou encore merci, le problème est résolue et j'ai réussi à corriger le reste, il n'y a plus de valeurs négatives

                PierrotLeFou a écrit:

                Je ne savais pas que 0 - 1 donnait 59?
                j'avais un doute la dessus quand je disais que c'étais s-1 le problème :D
                merci à vous pour votre aide :D



                -
                Edité par Anonyme 19 janvier 2020 à 22:28:22

                • Partager sur Facebook
                • Partager sur Twitter
                  20 janvier 2020 à 0:07:15

                  Méthode propre

                  • on convertit le temps indiqué en h, m et s sous forme d'un nombre de secondes  sec = s + 60 * m + 3600 * h;
                  • on ajoute, on soustrait des durées en secondes
                  • on fait l'opération inverse (modulos etc).

                  Pas de if là dedans.

                  -
                  Edité par michelbillaud 20 janvier 2020 à 0:07:44

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 janvier 2020 à 1:05:50

                    Si c'était aussi facile de convertir les jours+mois+année ...
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Le Tout est souvent plus grand que la somme de ses parties.

                      20 janvier 2020 à 7:40:50

                      Ça tombe bien, ce n'est pas l'exercice qu'on lui propose.

                      Probablement destiné à lui faire utiliser des if, mais qui tombe à plat si on pense à l'autre méthode.

                      -
                      Edité par michelbillaud 20 janvier 2020 à 7:41:15

                      • Partager sur Facebook
                      • Partager sur Twitter

                      condition if

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown