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 :

Comment faire des calcules de temps en millisecondes ?


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Comment faire des calcules de temps en millisecondes ?
    Comment faire des calcules de temps en millisecondes ?

    Je cherche a faire un calcul du temps de réaction du genre :

    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
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <dos.h>
    #include >conio.h>
     
    void main(void)
     
    {
      int coeftmp;
      time_t dep, stp;
     
     
      srand(time(0));
      coeftmp = rand() % 15; 
      delay(coeftmp*1000);          /* temps aleatoire*/
      printf("\a");                 /* signal sonore */
      time(&dep);
      kbhit();
      time(&stp);
     
      printf("Votre temps de reaction est de %d", stp-dep);
     
    }
    Le probleme c que mon affichage est en secondes et que pour un temps de réaction ca ne convient pas. J'ai essayé de mettre au niveau de l'affichage une valeur en virgule flottante mais ca ne marche pas.
    Y a t'il une solution :

  2. #2
    Membre averti

    Inscrit en
    Juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 97
    Points : 307
    Points
    307
    Par défaut
    time compte des secondes. Point.

    Cherches si tu disposes de ftime (millisecondes).
    "J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone."-Bjarne Stroustrup
    www.stroustrup.com

  3. #3
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Après y'a "clock()", sa fréquence est de 1/CLK_PER_SECOND (ou un nom dans ce style, voir ton <time.h>).

    Sous Windows (BCB5) : 1000 "clics" / secondes.

    @+ Haypo

  4. #4
    fd
    fd est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut qpc
    Les fnc ayant la plus haute définition sur windows :

    QueryPerformanceCounter()
    et
    QueryPerformanceFrequency()

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut comment faire des calculs en millisecondes? rep
    #include <time.h>


    double timedif;
    double time1 = (double)clock();
    time1 = time1/(double)CLOCKS_PER_SEC;



    CE QUE TU VE TESTER EN TEMPS DE REACTION en secondes mais t as une precision de l ordre des centiemes de sec pas mieux



    timedif = (((double)clock()) / (double)CLOCKS_PER_SEC) - time1;
    printf("\nLe temps ecoule du programme en secondes est %f\n",timedif);




    Pour plus d'explications, voir les cours et tutoriels pour apprendre facilement la programmation C : http://c.developpez.com/cours/
    tu es libre d etre con mais pas con d etre libre!

  6. #6
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 137
    Points : 621
    Points
    621
    Par défaut
    chaque système a ses propres fonctions pour gérer le temps. pour time, ça ne gère que les secondes donc en effet c'est pas cool. si t'es sous DOS, tu as une "struct time" qui te permet d'avoir des centièmes de secondes evec les fonctions gettime et settime. C'est quand même mieux mais c'est pas ce que tu veux (t'es compliqué toi !!!). l'API Windaube te permet d'avoir les millisecondes avec une structur SYSTEMTIME et les fonctions du style GetSystemTime et ses consoeurs ....

    ...

    T'es sous Linux ? hé ! j'ai pas réponse a tout mon gars 8) , de toute façon on dirait que y'en a d'après nyal ... essaye "man utime" oon sait jamais 8)

  7. #7
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Un rechercher m'a donne pour Windows :
    http://www.developpez.net/forums/vie...=temps+seconde

    Et pour linux/unix : j'ai trouve profil :
    int profil(u_short *buffer, size_t taille_buf, size_t oftset, u_int echelle);
    Cf. http://www.linux-france.org/article/man-fr/man3/profil-3.html

  8. #8
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Finalement, c'est times qu'il faut utiliser (profil, c'est pour des bout de code...)

    utilisation:
    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
     
    #include <stdio.h>
    #include <sys/times.h> /* pour times */
    #include <unistd.h>    /* pour sysconf */
    #include <time.h>      /* pour _SC... */
    int main(void) {                    
        long i,j;          
        struct tms t1,t2;
        double ratio=1000 / sysconf(_SC_CLK_TCK); /* peut etre flotant */
        times(&t1);
        for (i = 0; i < 10000000; i++)
             j++;
        times(&t2);
        printf("Duree d'exectution en milisecondes: user %f, systeme : %f\n", ratio * (t2.tms_utime - t1.tms_utime),
                ratio *  (t2.tms_stime - t1.tms_stime));
        return 0;
    }
    Teste et approuve sous Linux/x86, Unix/Sparc

  9. #9
    Membre averti

    Inscrit en
    Juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 97
    Points : 307
    Points
    307
    Par défaut
    Citation Envoyé par D[r
    eadLock]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        double ratio=1000 / sysconf(_SC_CLK_TCK); /* peut etre flotant */
    J'aurais mis '1000.' pour plus de sûreté.
    "J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone."-Bjarne Stroustrup
    www.stroustrup.com

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

Discussions similaires

  1. [WD-2007] Comment faire des calculs
    Par danielribeiro dans le forum Word
    Réponses: 5
    Dernier message: 06/04/2011, 09h39
  2. Réponses: 1
    Dernier message: 03/04/2010, 21h02
  3. Réponses: 3
    Dernier message: 24/07/2009, 16h51
  4. Comment faire des calculs de Rotation avec Ogre
    Par Rumpel dans le forum Ogre
    Réponses: 0
    Dernier message: 22/07/2009, 18h15
  5. Réponses: 5
    Dernier message: 15/03/2007, 10h08

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