Blutige C-Anfängerfrage (reaktionstest)



  • Hallo liebe Leser,
    ich beschäftige mich gerade mit C und seinen Tücken...

    Ich bin gerade dabei ein Reaktionstest in C zu realisieren.
    Ein Countdown soll (später) im Hintergrund unsichtbar laufen,
    bei Ablauf soll der Nutzer dann die Enter-Taste betätigen.

    Zwischen Ablauf des Countdownzählers und betätigen der Entertaste soll nun die Zeit gemessen werden. - Und da ist mein Problem.

    #include <stdlib.h>
    #include <time.h>
    #include <stdio.h>
    
    int main(void) {
    
    double elapsed1,elapsed2,elapsed3;
    
    clock_t akt_zeit1;
    clock_t end_zeit1;
    /*
    clock_t akt_zeit2;
    clock_t end_zeit2;
    
    clock_t akt_zeit3;
    clock_t end_zeit3;
    */
    clock_t ergb1_zeit;
    clock_t ergb2_zeit;
    
    srand(time(NULL));
    
    int sekunden1 = rand()%10+2;
    /*
    int sekunden2= rand()%10+2;
    int sekunden3 = rand()%10+2;
    */
    
    printf("%i\n",sekunden1);
    
    while (sekunden1!=0) {
    
    printf("Noch %i Sekunden\n",sekunden1);
    
    end_zeit1=clock()+CLOCKS_PER_SEC;
    
    do {
    akt_zeit1=clock();
    }
    
    while (akt_zeit1<end_zeit1);
    sekunden1--;
    
    }
    
    ergb1_zeit = clock();
    
    if (getchar()=='\n'){
    ergb2_zeit = clock();
    elapsed1 = ((double)(((ergb2_zeit-ergb1_zeit)/CLOCKS_PER_SEC)));
    printf("\nbenoetigte Zeit:%f\n",elapsed1);
    }
    
    /*
    int zufall;
    int countdown;
    int zeit;
    clock_t startzeit, endzeit;
    startzeit=clock();
    endzeit=clock();
    printf("Es vergingen %5.5f Sekunden gestoppt.\n\n”,(double) (endzeit-startzeit)/(CLOCKS_PER_SEC);
    */
    return 0;
    }
    

    Vielen Dank schon mal 🙂


  • Mod

    backfisch schrieb:

    Und da ist mein Problem.

    Und was ist dieses geheimnisvolle Problem? Bitte mal den ersten Link in meiner Signatur lesen.



  • Pardon.

    Das Kernproblem liegt in Zeile 55 soweit ich es beurteilen kann.

    Ich bekomme jedesmal als Zeit eine 0.00000 ausgegeben.
    Die Zeitmessung der Reaktion funktioniert also gar nicht.
    Für Denkanstöße bin ich höchst dankbar.



  • C99 Standard schrieb:

    The clock function returns the implementation’s best approximation to the processor time used by the program ...

    clock() gibt die Zeit zurück, die dein Programm den Prozessor benutzt.

    Das getchar() gibt aber die Kontrolle an das Betriebssystem ab.
    Also schläft dein Programm in der Zeit.



  • Können Fragen blutig sein?


Anmelden zum Antworten