Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mon chronométres

Les sources

    27 décembre 2005 à 22:40:29

    Hello !

    Je vous donne les sources de mon petit chronométre qui gére heure, minute et seconde...Il utilise la fonction sleep en plus du cour... ^^

    #include <stdio.h>
    #include <stdlib.h>

    long seconde = 1;
    long minute;
    long heure;

    int main(int argc, char *argv[])
    {
      while(1)
      {
       
       sleep( (int) 1000 );
       system("CLS");
       
       
       if(seconde == 60)
       {
       minute++;
       seconde = 0;           
       }
       
       if(minute == 60)
       {
       heure++;
       minute = 0;         
       }
       
       printf("%ld heures %ld minutes %ld secondes", heure, minute, seconde);
       seconde++;       
      }
      system("PAUSE");     
      return 0;
    }


    ++
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 décembre 2005 à 22:46:16

      Les variables minute et heure n'ont pas d valeur au début... (enfin bon elles sont sûrement initialisées à 0).

      C'est pas mal mais ça a un défaut : il ne tient pas compte du temps que mettent les instruction à s'exécuter, ce qui fait que come il attend 1000ms après un petit peu de temps, il doit finir par se décaler. Mais obn la seule façon de changer ça serait d'utiliser les bonnes libs pour manipuler le temps, et je ne les connais pas (<time.h> sans doute).

      ;)
      • Partager sur Facebook
      • Partager sur Twitter
        27 décembre 2005 à 22:48:20

        Ok merci beaucoup mais moi non plus je connais pas la librairie time... xD
        • Partager sur Facebook
        • Partager sur Twitter
          28 décembre 2005 à 10:48:32

          J'obtiens ce message d'erreur :euh: :
          [Linker error] undefined reference to `sleep'

          Faut-il lier quelque chose de particulier?
          • Partager sur Facebook
          • Partager sur Twitter
            28 décembre 2005 à 10:55:55

            pour utiliser Sleep(), je crois qu'il faut ajouterla librairie windows.h
            donc ajouter "#include "windows.h"" dans les directives de préprocesseur.
            • Partager sur Facebook
            • Partager sur Twitter
              28 décembre 2005 à 11:01:53

              j'ai inclus ce header, mais l'erreur survient encore :(
              • Partager sur Facebook
              • Partager sur Twitter
                28 décembre 2005 à 11:09:27

                tu utilise quel IDE?

                edit : moi j'ao cette erreur

                14 C:\Documents and Settings\protocole\Bureau\chrono.cpp `sleep' undeclared (first use this function)
                • Partager sur Facebook
                • Partager sur Twitter
                  28 décembre 2005 à 11:38:37

                  En incluant time.h, tu pourrais utilisez un time(NULL) pour obtenir le temps (avec un modulo 60 pour savoir si une seconde a passé). En clair, sa a la place de if(seconde == 60) :
                  if((((int)time(NULL))%60) == 0)
                     minute++;

                  Sinon initialise tes variables au depart, sinon elle prenne la valeur d'une adresse quelconque qui a changé et sa aboutie a la mettre a des nombres genre 832876309 ^^
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 décembre 2005 à 14:09:22

                    Pour un chronomètre je penserais plutot à utiliser windows.h et la fonction GetTickCount() qui retourne le nombre de millisecondes écoulées depuis le démarrage du PC. En faisant une petite soustraction on peut facilement connaitre le temps écoulé entre deux instants.. Cette méthode permet de ne pas accumuler de retard du au temps d'execution des instructions (des processus de tout le systeme..)
                    EDIT (précision) :
                    Si le temps écoulé entre deux instant est supérieur à 1000ms c'est qu'une seconde c'est écoulé entre ces deux instant, on pourra donc incrémenter la variable seconde..
                    Imaginons que ton pc soit vraiment très très lent ou surchargé et que le temps d'execution de ta boucle soit supérieur à 2000ms (très très peu probable) il suffirait a se moment la d'incrémenter de 2 la variable seconde pour éviter tout retard :p
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
                      28 décembre 2005 à 15:00:00

                      pour les Macqueux ou les linuxiens :
                      il faut inclure la librairie <unistd.h> pour la fonction Sleep, et non pas windows.h
                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 décembre 2005 à 15:02:36

                        Voila faut écouter uranium :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 décembre 2005 à 17:29:10

                          Citation : uranium

                          pour les Macqueux ou les linuxiens :
                          il faut inclure la librairie <unistd.h> pour la fonction Sleep, et non pas windows.h


                          Moi je suis un 'windowsiens' ( o_O ) mais pourtant, en incluant windows.h... ben ça marche pas :-°
                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 décembre 2005 à 22:34:07

                            Citation : BoudBoulMan

                            Citation : uranium

                            pour les Macqueux ou les linuxiens :
                            il faut inclure la librairie <unistd.h> pour la fonction Sleep, et non pas windows.h


                            Moi je suis un 'windowsiens' ( o_O ) mais pourtant, en incluant windows.h... ben ça marche pas :-°



                            moi de même !
                            • Partager sur Facebook
                            • Partager sur Twitter
                              29 décembre 2005 à 0:10:18

                              pour le sleep, il faut donc inclure ça dans les préprocesseurs: #include "windows.h"
                              puis comme instruction tu mets:
                              Sleep(1000);

                              Surtout n'oubli pas la majuscule!!! et pour la info la valeur donnée correspond au temp d'attente (en ms)

                              EDIT: et voilà le code:
                              #include <stdio.h>
                              #include <stdlib.h>
                              #include "windows.h"

                              long seconde = 1;
                              long minute;
                              long heure;

                              int main(int argc, char *argv[])
                              {
                                while(1)
                                {
                                 
                                 Sleep(1000);
                                 system("CLS");
                                 
                                 
                                 if(seconde == 60)
                                 {
                                 minute++;
                                 seconde = 0;           
                                 }
                                 
                                 if(minute == 60)
                                 {
                                 heure++;
                                 minute = 0;         
                                 }
                                 
                                 printf("%ld heures %ld minutes %ld secondes", heure, minute, seconde);
                                 seconde++;       
                                }
                                system("PAUSE");     
                                return 0;
                              }

                              PS: n'oubli de cocher la case qui indique que ton problème est résolu ;)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                29 décembre 2005 à 0:20:37

                                de toute facon il est pas super ce chronomètre, vu que l'instruction system("CLS") (qui est d'ailleurs inutile et non portable, en clair tu devrais l'enlever) n'est pas prise en compte du tout, alors qu'elle est pas si rapide que ca.

                                Évitez d'utiliser windows.h, ca fait du code pas portable, c'est vraiment pas terrible..
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  29 décembre 2005 à 0:22:17

                                  Ca fonctionne :D
                                  Comme tu l'as dit la fonction Sleep doit commencer par une majuscule, sinon ça marche pas...
                                  Merci :)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    29 décembre 2005 à 1:24:41

                                    Euuuh c'est moi ou windows.h est une librairie et donc c'est
                                    #include <windows.h>

                                    avec les chevrons et non avec les guillemets? Vous lisez pas les cours ou quoi?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      29 décembre 2005 à 5:37:41

                                      En effet je me demandais comment ça se faisait que personne n'avait remarqué les guillemets à la place des chevrons...
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        29 décembre 2005 à 9:50:05

                                        Bonjour, j'ai voulu faire un compte à rebourd à partir du chronomètre, mais apparemment, il ne marche pas. Quelqu'un peut m'aider ?


                                        #include <stdio.h>
                                        #include <stdlib.h>

                                        long seconde = 0;
                                        long minute = 2;
                                        long heure = 0;

                                        int main(int argc, char *argv[])
                                        {
                                          while(1)
                                          {
                                           
                                           sleep( (int) 1000 );
                                           system("CLS");
                                           if (seconde == 0 && minute == 0 && heure == 0) break ;
                                          else if(seconde == 0 && minute == 1) {
                                           minute = 0 ;
                                           seconde = 60 ; }
                                          else if(minute == 0 && heure == 1) {
                                           heure = 0 ;
                                           minute = 60 ; }
                                           else if(seconde == 0 && minute != 0)
                                           {
                                           minute--;
                                           seconde = 60;           
                                           }
                                           else if(minute == 0 && heure != 0)
                                           {
                                           heure--;
                                           minute = 60;         
                                           }
                                           
                                           printf("%ld heures %ld minutes %ld secondes", heure, minute, seconde);
                                           seconde--;       
                                          }
                                          system("PAUSE");     
                                          return 0;
                                        }


                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          29 décembre 2005 à 10:22:34

                                          Evitée autant que possible les variables globales. Il me semble que mateo l'a dit dans son cour.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            29 décembre 2005 à 13:19:41

                                            J'ai trouver dans met projet, un compte a rebourd fait par mon ami W!nn!3, je vais vous donner le code C


                                            /*----------Chronométre----------*/
                                            /*Ce code est fait par W!nn!3, c'est un compte a rebourd en seconde*/
                                                     
                                                     system("CLS");
                                                     
                                                     printf("\n                           **** Chronometre ****\n\n\n");
                                                     
                                                     
                                                     system("PAUSE");
                                                     
                                                     while(1)
                                                            {//Début du while
                                               
                                                             sleep( (int) 1000 );
                                                             system("CLS");
                                               
                                               
                                                             if(seconde == 60)
                                                                {
                                                                 minute++;
                                                                 seconde = 0;           
                                                                }
                                               
                                                             if(minute == 60)
                                                             {
                                                                heure++;
                                                                minute = 0;         
                                                             }
                                                             
                                                             printf("\n                           **** Chronometre ****\n\n\n");
                                                             printf("                        %ld heures %ld minutes %ld secondes", heure, minute, seconde);
                                                             seconde++;
                                                            }
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              29 décembre 2005 à 17:07:57

                                              Ok, c'est bon, j'ai réussi à finir mon compte à rebourd où l'utilisateur choisie la durée et à la fin j'ai mi un "biiip"!
                                              ( désolé de ne pas avoir mi des commentaires)


                                              #include <stdio.h>
                                              #include <stdlib.h>

                                              long heure = 0, minute = 0, seconde = 0 , refaire = 1 ;

                                              int main(int argc, char *argv[])
                                              {
                                                 while (refaire == 1){
                                                 system("CLS");
                                                  printf("entrer les heures :");
                                                  scanf("%ld", &heure);
                                                  printf("entrer les minutes :");
                                                  scanf("%ld", &minute);
                                                  printf("entrer les secondes :");
                                                  scanf("%ld", &seconde);
                                                  system("CLS");
                                                 
                                                while(1)
                                                {
                                                 
                                                 sleep( (int) 1000 );
                                                 system("CLS");
                                                 if (seconde == 0 && heure == 0 && minute == 0) break ;
                                                 
                                                 if(seconde == 0)
                                                 {
                                                 minute--;
                                                 seconde = 60;           
                                                 }
                                                 
                                                 if(minute == 0 && heure != 0)
                                                 {
                                                 heure--;
                                                 minute = 60;         
                                                 }
                                                  printf("                 **COMPTE A REBOURD EN COUR**\n\n");
                                                 printf("%ld heures %ld minutes %ld secondes", heure, minute, seconde);
                                                 seconde--;       
                                                }
                                                system("CLS");
                                                 printf("\7Compte a rebourd terminer !\n\n");
                                                 printf("refaire un compte a rebourd ? (0 pour quitter, 1 pour refaire)\n");
                                                 scanf("%ld", &refaire);
                                                 }     
                                                return 0;
                                              }
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                29 décembre 2005 à 17:47:51

                                                Pour faire un bip systeme :

                                                printf("\a");
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  29 décembre 2005 à 20:43:40

                                                  7 correspond a la valeur ascii du caractère '\a', donc c'est pour sa que sa marche aussi
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    29 décembre 2005 à 23:04:34

                                                    Apparemment, mon compte à rebourd ne marche toujours pas :'(
                                                    Si je tape 1 heure 0 minute et 0 seconde il m'affiche 0 heure -1 minute "et tant de" seconde (il affiche pas "tant de seconde" hein ! :p ) je vais voir ce sue je peu faire ... Mais si quelqu'un peut m'aider ...


                                                    Non, je crois que j'ai enfin trouvé ! Voici le code :


                                                    #include <stdio.h>
                                                    #include <stdlib.h>

                                                    long heure = 0, minute = 0, seconde = 0 , refaire = 1 ;

                                                    int main(int argc, char *argv[])
                                                    {
                                                       while (refaire == 1){
                                                       system("CLS");
                                                        printf("entrer les heures :");
                                                        scanf("%ld", &heure);
                                                        printf("entrer les minutes :");
                                                        scanf("%ld", &minute);
                                                        printf("entrer les secondes :");
                                                        scanf("%ld", &seconde);
                                                        system("CLS");
                                                       
                                                    if (seconde == 0){ if (minute != 0) { minute-- ;} seconde = 60 ;}

                                                      while(1)
                                                      {

                                                       sleep( (int) 1000 );
                                                       system("CLS");
                                                       if (seconde == 0 && heure == 0 && minute == 0) break ;

                                                       if(seconde == 0 && minute != 0)
                                                       {
                                                       minute--;
                                                       seconde = 60;
                                                       }

                                                       if(minute == 0 && heure != 0)
                                                       {
                                                       heure--;
                                                       minute = 60;
                                                       }
                                                        printf("                 **COMPTE A REBOURD EN COUR**\n\n");
                                                       printf("%ld heures %ld minutes %ld secondes", heure, minute, seconde);
                                                       seconde--;
                                                      }
                                                      system("CLS");
                                                       printf("\7Compte a rebourd terminer !\n\n");
                                                       printf("refaire un compte a rebourd ? (0 pour quitter, 1 pour refaire)\n");
                                                       scanf("%ld", &refaire);
                                                       }
                                                      return 0;
                                                    }

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      30 décembre 2005 à 23:28:23

                                                      Citation : bluestorm

                                                      Évitez d'utiliser windows.h, ca fait du code pas portable, c'est vraiment pas terrible..


                                                      J'ai cherché à faire un sleep "portable" en utilisant la librairie time.h
                                                      Mais est-elle réellement portable?


                                                      void Attendre(long secondesVoulues)
                                                      {   
                                                          long secondesDebut = time(NULL);
                                                          long secondesPassees=0;
                                                         
                                                          while(secondesPassees!=secondesVoulues)
                                                          {
                                                              secondesPassees = time(NULL);
                                                              secondesPassees -= secondesDebut;
                                                          }
                                                      }
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        31 décembre 2005 à 10:33:24

                                                        time.h étant une librairie portable, le code doit l'être aussi certainement
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        Mon chronométres

                                                        × 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