Problem beim Tastatureinlesen



  • Folgende Funktion soll einen Reaktionstest darstellen, mit einer Ampel die von rot auf grün springt durch einen Eingabe wird die Reaktionszeit ermittelt, mein Problem ist, dass wenn ich zu Beginn der Funktion eine Taste drücke wird die Reaktionszeit auf null gesetzt. Die Tastatur soll aber erst eingelesen werden wenn die Ampel auf grün springt.

    double ampel(void)
    {
    	double duration_c;
    	int gdriver=DETECT,gmode;
    	int random;
    	char zk[]="Bitte Taste druecken sobald die Ampel auf gruen umspringt"; 
    
    	// Init Grafik und Layout 
    	initgraph(&gdriver,&gmode,""); 
    
    	settextstyle(3,0,1);
    	outtextxy(70,0,zk);
    
    	setcolor(4);
    	//rote Ampel
    	pieslice(150,200,0,360,50);
    	pieslice(300,200,0,360,50);
    	pieslice(450,200,0,360,50);
    
    	setcolor(2);
    
    	srand( (unsigned)time( NULL ) ); // Initialisiert den Random-Generator mit der akt. Zeit in Sek
    	random = MIN_T + rand()%(MAX_T - MIN_T);
    
    	delay(random); 
    	//Ampel springt auf grün
    	pieslice(150,200,0,360,50);
    	pieslice(300,200,0,360,50);
    	pieslice(450,200,0,360,50);
    
    	clock_t  start_c, finish_c;
    
    	start_c = clock();	
    
    	fflush(stdin);
    	getch();//Tastatureingabe
    
    	finish_c =	clock();
    	duration_c = (double)(finish_c - start_c)/(CLOCKS_PER_SEC);
    
    	cout <<"Reaktionszeit= "<<duration_c<<"  s\n\n";
    
    	return duration_c;
    }
    

    Hat irgendjemand vielleicht ne Ahnung wie ich das hinbekommen könnte?



  • Eingabepuffer leeren.

    edit:

    #include <iostream>
        std::cin.sync();
    

    mfg


Anmelden zum Antworten