For Schleife bitte um Hilfe
-
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...
-
EOP schrieb:
Und vergiß Leprechauns Vorschlag. Nicht gut.
Angefangen mit einer nicht initialisierten globalen Variable, usw. usf.Das ist, wie gesagt, bloß ein Beispiel. Man betrachte es als Pseudocode.
Werden globale Variablen nicht automatisch auf 0 gesetzt, oder ist das nur bei Java so?
-
Leprechaun schrieb:
Werden globale Variablen nicht automatisch auf 0 gesetzt, oder ist das nur bei Java so?
Ne ist auch in C++ so. Allerdings sind da wie gesagt noch andere Macken drin. Erstmal ist printf C und kein C++. Und ich hätte SEC nicht doppelt benutzt sondern noch eine Variable (defines sind auch so C mäßig) für Minuten eingeführt. Dann wäre dir wohl auch nicht der Fehler unterlaufen, dass bei dir eine Stunde 24 Minuten hat. So sieht es etwas moderner aus:
const int SEC = 60; const int MIN = 60; const int HOUR = 24; //... cout << "days: " << cnt/SEC/MIN/HOUR << " hour: " << (cnt/SEC/MIN)%HOUR << " min: " << (cnt/SEC)%MIN << " sec: " << cnt%SEC << endl;
-
sebi707 schrieb:
Erstmal ist printf C und kein C++.
Weiß ich, aber mein Compiler zumindest frisst beides. Außerdem finde ich persönlich printf einfach schöner als cout.
-
Leprechaun schrieb:
sebi707 schrieb:
Erstmal ist printf C und kein C++.
Weiß ich, aber mein Compiler zumindest frisst beides.
Was falsch ist. In C++ ist der Header <cstdio> und printf ist in namespace std.
Desweiteren sollten, wie angemerkt, die Makros durch Konstanten ersetzt werden, und das Design mit der globalen Variable ist auch nicht gerade schön.
Und void main() ist falsch, der return type ist int. Alles andere ist falsch, aktivier mal Compiler Warnungen, dann sagt er dir das auch.