For Schleife bitte um Hilfe
-
Hallo Leute ich hätte da eine Frage/bitte an euch!
Ich möchte gerne wissen wie man einen Logischen Timer programmiert
...
Ich als anfänger bin erst in der Lage einen Timer zu erstellen der von
z.B. 120 Sekunden immer 1 Sekunde abzieht bis 0.Aber wie mache ich das, dass der Timer nicht 150 Sekunden anzeigt,
sondern 02:00 für 120 Sekunden also 2 minuten?
Und dann von 02:00 -> 01:59 ... usw weiter subtrahiert ?Sprich ein ganz normaler Timer , ihr wisst was ich damit meine.

Kann mir jemand sowas schreiben bzw ist dies möglich mit klenem aufwand ?
Wäre sehr nett wenn die Erfahrenen unter euch mir das schreiben könnten.
Damit ich das auch mal lerne
Danke im voraus für jede Hilfe oder Kommentar :)!

-
120 / 60 = 2, Rest 0 -> 2:00
150 / 60 = 2, Rest 30 -> 2:30
61 / 60 = 1, Rest 1 -> 1:01
59 / 60 = 0, Rest 59 -> 0:59In C++ ist
a%bder Rest der Divisiona/b.
-
aber wie bringe ich die for schleife dazu bei 01:00 auf 00:59 umzubrechen und von da dann weiter zu subtrahieren ? verstehe ich nicht so ganz, die rechnung ist mir klar aber wie ich den code realisieren soll nicht so ganz

-
Garnicht, du zählst wie vorher auch von 120 auf 0 runter, nur dass du zur Anzeige die Minuten und Sekunden mit SeppJs methode berechnest.
-
Kann mir einer wer ganz kur diese Rechnungs For Schleife Programmieren ? Ich verstehe das nicht so ganz
bitte!Mfg
-
Zeig mal deinen bisherigen Code.
-
sekunden ist die Zählvariable der Schleife von 120 bis 0 Sekunde_fuer_Anzeige = sekunden % 60; Minuten_fuer_Anzeige = sekunden / 60; Ausgabe von Minuten_fuer_Anzeige:Sekunde_fuer_Anzeige
-
Dirk kannst du mir das als for schleife scchreiben ? Wäre mega nett!
Danke im voraus.
-
Ich erkläre dir mal kurz, wie das hier läuft:
Da das offenbar eine Hausaufgabe ist und du nichts selber machst, wird dir gleich jemand eine Lösung mit Templates und Makros präsentieren, die du (und dein Lehrer) nicht im Ansatz verstehen.
Sobald du aber etwas Eingeninitiative zeigst, egal wie schlecht der Code ist, stehen die Chancen gut, dass das einer verbessert und du deine Lösung -ohne wirklich was selber zu machen- bekommst.
Also zeig mal irgendwas.
-
Jockelx schrieb:
egal wie schlecht der Code ist,
Eine Schleife die rückwärts zählt und die Zählvariable ausgibt, sollte es schon sein.
Und mit
cout. Ist ja C++
-
So etwa. Siehe SeppJ's Antwort.
#include <stdio.h> unsigned long cnt; #define SEC 60 #define HOUR 24 void tick() { cnt++; printf ("days:%d hour:%d min:%d sec:%d\n", cnt/SEC/HOUR/HOUR, (cnt/SEC/HOUR)%HOUR, (cnt/SEC)%HOUR, cnt%SEC); } void main() { for(;;) tick(); }
-
Das ist jetzt der code von dir für die gegebene Aufgabenstellung? Das sieht eher aus wie ein Beispiel aus dem Unterricht, dass auch noch falsch ist (24min pro Stunde). Hast du nicht wenigstens einen Ansatz wie man das auf das geforderte umbauen kann (zählt runter statt hoch, keine Anzeige von Stunden und tagen). Ein bisschen Einsatz musst du schon zeigen...
-
sebi707 schrieb:
Das ist jetzt der code von dir für die gegebene Aufgabenstellung? Das sieht eher aus wie ein Beispiel aus dem Unterricht, dass auch noch falsch ist (24min pro Stunde). Hast du nicht wenigstens einen Ansatz wie man das auf das geforderte umbauen kann (zählt runter statt hoch, keine Anzeige von Stunden und tagen). Ein bisschen Einsatz musst du schon zeigen...
Ist nur ne Demo mit der der OP rumfrickeln kann.
Wichtig ist das Verständnis.
-
Hier mal eine C++11 (14?) Lösung.
Einfacher geht es nicht, die Denkarbeit (das Umrechnen) macht die coole chrono-lib#include<chrono> #include<iostream> #include<thread> using namespace std; int main() { constexpr chrono::seconds dauer = 120s; for( auto i = dauer; i >= 0s; i-- ) { chrono::minutes m = chrono::duration_cast<chrono::minutes>( i ); chrono::seconds s = i - m; cout << "TIMER: " << m.count() << ':' << s.count() << endl; std::this_thread::sleep_for( 1s ); } }Mfg
-
Leprechaun schrieb:
Ist nur ne Demo mit der der OP rumfrickeln kann.
Wichtig ist das Verständnis.Ach sorry. Hab dich für den TO gehalten...
shft schrieb:
Hier mal eine C++11 (14?) Lösung.
C++14, da kamen die Literals erst dazu. Außerdem fehlt noch ein
using namespace std::chrono_literals;.
-
sebi707 schrieb:
Außerdem fehlt noch ein
using namespace std::chrono_literals;.OK fehlt doch nicht dank inline Namespaces...
-
Wenns nur 1ne For Schleife ist kann sie mir einer zeigen ? Da ich keinerlei Ideene dazu habe und meine verusche immer fehlschlagen ...
Wenns nur eine ist ?
Eine Schleife kann ich machen aber dann zählt es ja die sekunden runter aber wie sage ich der for schleife dass sie die Minute um 1 veringern soll wenn die sekunde bei 0 ist ? und wie sage ich der Schleife dass wenn die Minute verringert wurde und die Sekunde auf 00 war dass sie wieder bei 59 anfangen soll für die nächste minute ?
das sind fragen die ich mir nicht beantworten kann.
mfg

-
Lesen zu können ist oft recht hilfreich.
SeppJ und spätestens DirkB haben doch schon alles gesagt.
Das war schon fast spoonfeeding (fällt mir auf Deutsch jetzt keine vernünftige Übersetzung ein).EDIT:
Und vergiß Leprechauns Vorschlag. Nicht gut.
Angefangen mit einer nicht initialisierten globalen Variable, usw. usf.
-
zantes schrieb:
und wie sage ich der Schleife dass wenn die Minute verringert wurde und die Sekunde auf 00 war dass sie wieder bei 59 anfangen soll für die nächste minute ?
Hättest du weniger Probleme, wenn du Zentimeter zählst und Meter ausgeben sollst?
EOP schrieb:
... mit einer nicht initialisierten globalen Variable
wie soll das denn gehen?
Nur weil er den Wert nicht hinschreibt?
-
Irgendwie fuhlfüich mich ignoriert...