online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon Hexadecimal vom 20.12.2020, 11:50 Options

Zeitschleife in C programmieren

Hallo,

ich habe folgendes Problem. Ich versuche gerade C zu lernen. Nun will ich in einem Programm eine Matheaufgabe ausgeben und der Anweder soll 10 Sekunden Zeit haben sie zu lösen. Also dachte ich an eine do-while Schleife, die pro durchlauf eine Variable um 1 erhöht und dann noch sleep(1000) ausführt. Wenn die Variable also bei 10 ist, müssten ja 10 Sekunden vergangen sein. Nebenbei, soll das Programm aber auch noch darauf achten, on der Anwender schon eine Lösung eingegeben hat und wenn ja die zeitschleife unterbrechen und im Programm weiter machen. Ich schreib den Quelltext, den ich mir ausgedacht habe, der aber nciht geht mal unten hin.
Kann mir da jemand helfen? Ist es grundsätzlich falsch, oder hab ich nur irgendwo einen Denkfehler?

printf("Bitte Lösung eingeben");

do
{
if(kbhit())
{
break;
}
sleep(1000);
zeit++;
} while (zeit != 10);

scanf("%d", &ergebnis);


Antwort schreiben

Antwort 1 von rudophl vom 20.12.2020, 17:27 Options

Zitat:
der aber nciht geht


du hast nicht dazu geschrieben was denn nicht geht.

Antwort 2 von Hexadecimal vom 21.12.2020, 12:05 Options

Oh, sorry

naja es läuft nicht weiter. Normalerweise müsste es ja nach 10 Sekunden abbrechen und im Programm weiter springen. Tuts aber nicht. Es springt nur auf das kbhit() an, aber die zeit lässt es völlig kalt.

Antwort 3 von Supermax vom 21.12.2020, 12:08 Options

Hast du die Variable "zeit" vorher initialisiert? Also eine Zeile
int zeit = 0;
oder ähnlich? Sonst kann es sein, daß "zeit" einen beliebigen Wert hat und die Bedingung "zeit != 10" immer erfüllt ist bzw. erst wenn die Variable "überläuft" und wieder bei 0 beginnt.

Antwort 4 von Hexadecimal vom 21.12.2020, 12:29 Options

Nein habe ich nicht gemacht. Ich dachte die <time.h> brauch man nur, wenn es um Zeitangaben wie Uhrzeit und Datum geht. Aber ich werde es testen, Danke erstmal.

Antwort 5 von Hexadecimal vom 21.12.2020, 12:31 Options

Ach halt, falsch gelesen, Ja, eine Variable "zeit" hab ich definiert. Ich dachte wir reden jetzt von der Bibliothek.

Antwort 6 von Supermax vom 21.12.2020, 12:34 Options

Bau doch mal in die Schleife eine Test-Ausgabe ein, z.B. ein
fprintf(stderr,"zeit=%d\n",zeit);
, dann siehst du wo es eventuell haken könnte.

Mit welchem Entwicklungssystem arbeitest du denn überhaupt?

Antwort 7 von Hexadecimal vom 21.12.2020, 17:43 Options

Ich habe nur DevC++ zur Verfügung. Kann es sein, dass das Programm während der sleep() gar keine Befehle aufnimmt? Gibt es noch andere Zeitschleifen unter C, die einfach nur dafür da sind Zeit zu "verbrauchen"?
Oder mal anders. Wie würdet ihr denn die Aufgabe lösen?

Der Anwender soll eine Matheaufgabe sehen. Die Lösung zu allen Aufgaben ist immer nur eine einstellige Integer - daher die Idee mit dem kbhit() - Nach 10 Sekunden soll er automatisch zur nächsten Aufgabe weitergeleitet werden. Gibt er innerhalb dieser Zeit eine Lösung ein, soll die Zeitschleife abgebrochen werden und er wird schon eher zur nächsten Aufgabe weiter geleitet.

Bin mal gespannt, wie ihr an sowas ran gehen würdet. Bin wie gesagt noch absoluter C Dau (daher bitte kompliziertere Dinge erklären wenns geht).

Antwort 8 von Hexadecimal vom 22.12.2020, 19:25 Options

Ah ich habs, falls es jemanden interessiert. Es hat die ganze Zeit funktioniert, aber es konnte nicht zur nächsten Aufgabe springen, weil es durch die scanf() Anweisung auf eine Eingabe gewartet hat. Blöder Fehler, das geb ich zu.

Ähnliche Themen

MMO(RP)G programmieren
tobi_master2000  22.06.2007 - 229 Hits - 3 Antworten

Stimmgerät programmieren...
credo  15.07.2007 - 45 Hits - 2 Antworten

Probleme beim Programmieren in C
JackDauert  20.10.2007 - 79 Hits - 7 Antworten

Spiele Programmieren
simon_365  30.01.2008 - 254 Hits - 5 Antworten

Ordner programmieren
TByte  17.03.2008 - 64 Hits - 12 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026