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

 C Discussion :

Horloge en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut Horloge en C
    Bonjour,

    J'essaye de faire une petite horloge, mais je suis confronté à un problème technique que je n'arrive pas à surpasser !
    Comme le modulo marche sur des entier, les test de "Time" qui est une quantité en secondes, dure 1 seconde et le test aussi.
    Ainsi chaque valeur est incrémenté pendant 1 seconde. Comment rectifier le tir ?

    Merci d'avance


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <time.h>
    #include "./../../bibliotheque.h"
     
    int main()
    {
        int TIME=GetTickCount();
        int Heure=0;
        int Minute=0;
        int Seconde=0;
        int Time=0;
     
        while(1)
        {
                Time=(int)((GetTickCount()-TIME)/1000);
     
     
                if ( (Time%1)==0 )
                   {
                                Seconde++;
                                //break;
                   }
     
                if ( (Time%60)==0 )
                   {
                                Seconde=0;
                                Minute++;
                                //break;
                   }
     
         else  if ( (Time%3600)==0 )
                   {
                                Seconde=0;
                                Minute=0;
                                Heure++;
                                //break;
                   }
     
                printf(" Heure:%d Minute:%d Seconde:%d Time:%d\n", Heure, Minute, Seconde, Time);
        }
     
        //getchar();
    }

  2. #2
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Horloge ou compteur ?

    Car là, c'est plus un compteur qu'une horloge...

  3. #3
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Pour compter des secondes, ne vaut-il pas mieux utiliser time() de la bibliothèque time, qui justement incrémente les secondes?

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    #if defined (WIN32) || defined (_WIN32)
    #include <windows.h>
    #define msleep(ms) Sleep(ms)
    #elif defined (__linux) || defined (linux)
    #include <unistd.h>
    #define msleep(ms) usleep((ms) * 1000)
    #endif
     
    int main(void)
    {
        struct tm * pTime;
        time_t old_counter = 0xffffffff;
        time_t new_counter;
        time_t offset = time(NULL);
        while(1)
        {
            new_counter = time(NULL);
            if(new_counter != old_counter)
            {
                printf("\r%10d", new_counter - offset);
                old_counter = new_counter;
            }
            msleep(100);
        }
        return 0;
    }
    Si c'est pour afficher une horloge, autant profiter à fond de la bibliothèque time:

    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
    19
    20
    21
    22
    23
    24
    25
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    #if defined (WIN32) || defined (_WIN32)
    #include <windows.h>
    #define msleep(ms) Sleep(ms)
    #elif defined (__linux) || defined (linux)
    #include <unistd.h>
    #define msleep(ms) usleep((ms) * 1000)
    #endif
     
    int main()
    {
        time_t t;
        struct tm * pTime;
        while(1)
        {
            t = time(NULL);
            pTime = localtime(&t);
            printf("\r%02d:%02d-%02d", pTime->tm_hour, pTime->tm_min, pTime->tm_sec);
            msleep(100);
        }
        return 0;
    }
    msleep sert a endormir le programme à chaque boucle pour ne pas monopoliser la CPU.

    A+

    Pfeuh

  4. #4
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recuperer heure d'une horloge atomique (Internet) ?
    Par Mailgifson dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/07/2004, 12h00
  2. Calculer la période d'une horloge
    Par barthelv dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 08/03/2004, 16h39
  3. horloge qui retarde
    Par bourvil dans le forum Ordinateurs
    Réponses: 9
    Dernier message: 23/11/2003, 15h17
  4. [horloge] conflit caractère / timer
    Par JeanJean dans le forum C
    Réponses: 10
    Dernier message: 09/05/2003, 23h47
  5. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15

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