Zeitmessung in einem C-Konsolen-Anwendung?

Senfy

Grünschnabel
hi@all,

ich als blutiger c anfänger habe eine hoffentlich einfache frage.
ich möchte die zeit (auf 1ms genau) messen die der benuzer für eine eingabe braucht.
ist für eine bestenliste in einem programm das dem benutzer das kopfrechnen trainiert.

ich hoffe es gibt eine gute lösung für mein problem.

thx im voraus
 
Code:
<time.h>

time_t msec = time(NULL) * 1000;

Noch genauer sind:

Unter Linux: gettimeofday
Unter Windows: GetSystemTimeAsFileTime
 
ich stand jetzt schon öfter vor dem problem:
wie kann ich den wert aufgeben lassen?
in diesem fall wie bekomme ich ms auf meinen bildschirm zu sehen?:confused:
 
sry,
naja eigentlich ganz einfach

stdio.h, stdlib.h und time.h includen
dann werden 3 int und 4 floatvariabeln + zeiger

int main()
{

do
{
srand ( time(NULL) ); /* Die Zufallszahlen werden initialisiert */
*p_zahl1 = rand() % 10 + 1; /* Generiert zwei Zufallszahlen zwischen 1 und 10 */
*p_zahl2 = rand() % 10 + 1;
*p_operator1 = rand() % 4 + 1; /* Generiert eine Zufallszahl die den Operator darstellt */

switch (*p_operator1)
{
case 1: /*Addition */
{
printf ("\n%.0f + %.0f = ", *p_zahl1, *p_zahl2);
scanf ("%f", &*p_u_eingabe);
*p_summe = *p_zahl1 + *p_zahl2;
if (*p_summe == *p_u_eingabe) ++*p_richtigeAntw;
break;
.
.
.
so geht es weiter die operanten durch
.
.
.
}
while (*p_summe == *p_u_eingabe);

printf ("FALSCH!\n");
printf ("Richtige Antwort: %.0f\n", *p_summe);
printf ("Richtig Beantwortete Aufgaben: %d\n", *p_richtigeAntw);
printf ("Zum Beenden ENTER druecken\n");
getch();

return 0;
}

ich möchte die zeit messen die der benutzer braucht um zu rechnen und seine eingabe zu machen.

ich habe das mal so probiert

case 1: /*Addition */
{
printf ("\n%.0f + %.0f = ", *p_zahl1, *p_zahl2);
time_t msec = time(NULL);
scanf ("%f", &*p_u_eingabe);
*p_zeit += msec
*p_summe = *p_zahl1 + *p_zahl2;
if (*p_summe == *p_u_eingabe) ++*p_richtigeAntw;
break;

klappt aber nicht weil msec vorher nicht deklariert wurde
und wenn ich msec als long int mit den anderen variablen deklariere dann wird 38860452 ausgegeben.

ich hoffe das reicht oder solls der komplette code sein?
 
ich habe das mal so probiert

case 1: /*Addition */
{
printf ("\n%.0f + %.0f = ", *p_zahl1, *p_zahl2);
time_t msec = time(NULL);
scanf ("%f", &*p_u_eingabe);
*p_zeit += msec
*p_summe = *p_zahl1 + *p_zahl2;
if (*p_summe == *p_u_eingabe) ++*p_richtigeAntw;
break;

klappt aber nicht weil msec vorher nicht deklariert wurde
und wenn ich msec als long int mit den anderen variablen deklariere dann wird 38860452 ausgegeben.

ich hoffe das reicht oder solls der komplette code sein?
Nee, im Grunde hätte auch der relevante letzte Teil ausgereicht.

Hast du dir denn mal die Funktion time angeschaut, was die eigentlich ermittelt bzw. zurückgibt? Die Funktion gibt die Systemzeit zurück und zwar in Sekunden die seit der "Epoche" vergangen sind. Die Zeit läuft natürlich kontinuierlich weiter. Um zu wissen wieviel Zeit während einer Aufgabe vergangen ist, muss man natürlich vorher die time Funktion aufrufen (Startzeit) und danach (Endzeit). Die vergangene Zeit ist dann die Differenz (Endzeit - Startzeit).

Da die time Funktion nur sekundengenau arbeitet ist es wahrscheinlich unsinnig das in msec umzurechnen.

Manchmal hilft die Suche: http://www.willemer.de/informatik/cpp/timelib.htm

Gruß
 
Zurück