Probleme mit Zeitschleife
-
Hallo,
ich habe folgende Aufgabe bekommen.
Schreibe ein programm das die Zahlen 1 bis 100 ausgibt. Die Zahlen sollen nacheinander erscheinen aber in unterschiedlichen Zeitabständen. Beginne mit 100 Ms und steigere in jeder runde die Millisekunden um 10 Prozent.
Wie soll ich das in der console machen? ich kann mir mit clock die aktuelle uhrzeit holen, "Startzeit" messen- Schleife solange ausführen bis "aktuelle Zeit" - "Startzeit" >= "Pause". Das ist ja soweit klar, aber wie soll ich das programmieren?
Ich blicke da nicth so durch.
Bitte erklärt es mir
Gruß
Sebastian
-
hmm also was ist denn mit sowas?
#include <iostream> #include <ctime> const unsigned short count_numbers = 100; int main() { std::wcout << L"Wellcome to Clock-Counter V0.1" << std::endl; clock_t time_start = 0; for (unsigned short number = 1; number <= count_numbers; ++number, time_start = clock()) { while ((clock() - time_start) < (number * 10)); // Jetzt wird gewartet, bis die // Differenz von vorher und jetzt // gleich (number * 10) ist ... // TODO: Gewünschte Zeit einsetzen. std::wcout << number << std::endl; // Zahl ausgeben ... } return 0; }...
Bearbeitet
Wo war jetzt das Problem von wegen clock? Achja ... die if war falsch herum ... und hab die for noch angepasst ... jetzt stimmt aber alles ... naja das kommt wenn man einfach ins Forum reintippt und nicht vorher compiliert
-
vielen dank für deine schnelle antwort.
mein problem ist aber das ich es mit Clock() machen muss. ich hab schon folgende schleife in der zwischenzeit gefunden
for( start_zeit = clock(); clock() - start_zeit < warte_zeit; )
das geht ja auch schon, nur mein problem ist eher das ich langsam nicht mehr durchblicke. die aufgabenstellung ist so einfach. aber das mit der zeit ist nicht so einfach wie ich dachte
-
SebastianGast schrieb:
vielen dank für deine schnelle antwort.
mein problem ist aber das ich es mit Clock() machen muss. ich hab schon folgende schleife in der zwischenzeit gefunden
for( start_zeit = clock(); clock() - start_zeit < warte_zeit; )
das geht ja auch schon, nur mein problem ist eher das ich langsam nicht mehr durchblicke. die aufgabenstellung ist so einfach. aber das mit der zeit ist nicht so einfach wie ich dachte
geht doch garnet
start_zeit = clock() holt wärend der ganzen schleife nur einmal die "zeit" es würde zu verzögerungen und du könntest garnet die 10% einhalten
-
ok danke.
aber das problem ist es werden langsam immer mehr schleifen, da noch durchzublicken ist nicht so leicht. hier mal so ne art programmablaufplan:
http://s6.bilder-hosting.de/tbnl/CDEA6.gif
Gruß
Sebastian
-
^^^^^ gucken ^^^^^ ... hab es angepasst ...
-
also irgendwie blick ich in dem programm immer noch nicht so ganz durch. bei mir gibt er in dem programm was du gemacht hast komischerweise nur ständig einser aus, ich habs eins zu eins kompilieren lassen
-
Der soll immer 1 ausgeben? Nee ... der zählt bis 100 hoch ... wobei der bei jeder Zahl um 10ms langsamer wird.
-
Wenn ich die Aufgabenstellung richtig verstanden habe waere das dann noch nicht ganz korrekt (D)Evil. Er soll bei jeder Ausgabe die ms um 10% steigern, ich wuerde das so verstehen:
1. 100ms
2. 110ms
3. 121ms
4. 133.1ms
usw.ka ob das stimmt, mich wuerde stoeren, dass da kommazahlen bei rauskommen, aber wieso sie sonst 10% statt 10ms schreiben waer mir schleierhaft.
-
Hmm ja das sollte er auch selbst noch warte ... da dann nen bissel Prozentrechnung reinzumachen ... das ist nun wirklich kein Problem ... nur so damit er nen Ansatz hat hab ich das jetzt so geschrieben ... wird halt bei jeder Zahl um 10ms langsamer ...