Zeit
-
Na du rechnest:
stunden = minuten / 60;
ohne das Minuten einen Wert besitzt.
Das meinte _matzeWundert mich das beim Rest was vernünftiges ausgegeben wird
-
ich988 schrieb:
Na du rechnest:
stunden = minuten / 60;
ohne das Minuten einen Wert besitzt.
Das meinte _matzeWundert mich das beim Rest was vernünftiges ausgegeben wird
Wenn ich beispielsweise 5000 Sekunden eingebe zeigt er mir Stunden 0
Minuten 83 und Sekunden 20 wenn ich das zurück rechne sind es 5000 Sekunden.
Warum muss Minuten einen Wert haben der soll doch errechnet werden und angezeigt werden was bei Minuten ja auch geht aber nicht bei Stunden warum nicht das möchte ich gerne wissen
-
Ach mist ich muss mich korrigieren
War heut Mittag grad im Tief-> Der Rest muss natürlich richtig ausgegeben werden.Nur bei Stunden ist der Fehler.
An der Stelle an der du die Stunden errechnest hat Minuten noch den Wert 0. 0/60 ergibt 0. Es passiert genau das was du eingegeben hast
Wenn du einen Wert haben willst muss du Minuten auch vorher einen zuweisen.
-
Simples Beispiel:
int h,m,s,rest=3666; h=rest/3600; rest=rest%3600; m=rest/60; rest=rest%60; s=rest;
(sollte passen...)
-
_matze schrieb:
Simples Beispiel:
int h,m,s,rest=3666; h=rest/3600; rest=rest%3600; m=rest/60; rest=rest%60; s=rest;
(sollte passen...)
Hallo matze
Entschuldige es ging nicht schneller
Du solltest mal ausprbieren was du geschrieben hast da geht nämlich garnichts.
Wenn du mir nicht sagen kannst wie ich nach der ersten Teilung auf die verbleibenden Sekunden zugreifen kann, wirst du mir nicht helfen können.[code] stunden = sekunden / 3600;
[/code]
Trotzdem vielen Dank für deine Bemühungen
-
Doch, klar geht das! Kopier mal den ganzen Code hier in eine main:
int h,m,s,rest=3661; h=rest/3600; rest=rest%3600; m=rest/60; rest=rest%60; s=rest; char str[256]; sprintf_s(str,256,"h: %d, m: %d, s: %d\n",h,m,s); printf(str); getchar();
Du wirst sehen, dass er 1 Stunde (3600 sek), 1 Minute (60 sek) und 1 Sekunde (1 sek
) ausgibt. Und das klappt sogar auch mit anderen Werten!
Wenn du mir nicht sagen kannst wie ich nach der ersten Teilung auf die verbleibenden Sekunden zugreifen kann, wirst du mir nicht helfen können.
Nach der ersten Teilung "Stunden=GesamtSekunden/3600" kommst du an die Restsekunden, indem du den Modulo-Operator ("%") einsetzt: "GesamtSekunden=GesamtSekunden % 3600". Das siehst du auch an meinem Beispiel.
-
_matze schrieb:
Doch, klar geht das! Kopier mal den ganzen Code hier in eine main:
int h,m,s,rest=3661; h=rest/3600; rest=rest%3600; m=rest/60; rest=rest%60; s=rest; char str[256]; sprintf_s(str,256,"h: %d, m: %d, s: %d\n",h,m,s); printf(str); getchar();
Du wirst sehen, dass er 1 Stunde (3600 sek), 1 Minute (60 sek) und 1 Sekunde (1 sek
) ausgibt. Und das klappt sogar auch mit anderen Werten!
Wenn du mir nicht sagen kannst wie ich nach der ersten Teilung auf die verbleibenden Sekunden zugreifen kann, wirst du mir nicht helfen können.
Nach der ersten Teilung "Stunden=GesamtSekunden/3600" kommst du an die Restsekunden, indem du den Modulo-Operator ("%") einsetzt: "GesamtSekunden=GesamtSekunden % 3600". Das siehst du auch an meinem Beispiel.
Das was du geschrieben hast ist aber reines C und kein C++ und wir sind hier im C++/CLI. Meiner Meinung nach fehlt bei dir doch die Eingabe der Sekunden.
Und das geht doch unter C mit scanf(%d, &sekunden);
Ich erhalte bei deinem Programm die Fehlermeldungen
Ich habe Visual Studio C++ 2005 Express[code] error C3861: "sprintf_s": Bezeichner wurde nicht gefunden. error C3861: "printf": Bezeichner wurde nicht gefunden. error C3861: "getchar": Bezeichner wurde nicht gefunden.
[/code]
Wenn ich es so unter C++/CLI schreibe zeigt mir die Stunden aber auch die kompletten Minuten an und die Sekunden
[/cpp][code]
Int32 stunden, minuten, sekunden;
Console::Write("\nBitte geben sie die Sekunden ein: = ");
sekunden=Convert::ToInt32(Console::ReadLine());
stunden = sekunden / 3600;
minuten = sekunden / 60;
sekunden = sekunden % 60;
Console::WriteLine("\n Stunden {0} Minuten {1} Sekunden {2} \n\n", stunden, minuten, sekunden);[/cpp][code]
-
Es ging ja auch nur um die grundsätzliche Vorgehensweise, daher habe ich die Eingabe mal weggelassen und den Wert fix vergeben. Welche Funktionen man zur Eingabe/Ausgabe benutzt, ist doch erstmal irrelevant. Und den Modulo-Operator gibts auch in C++/CLI! Tatsache ist, dass du mit deiner Rechnung
stunden = sekunden / 3600; minuten = sekunden / 60; sekunden = sekunden % 60;
nicht herausbekommst, dass x Sekunden = x Stunden, x Minuten und x Sekunden sind. Du berechnest, dass x Sekunden y volle Stunden enthalten, und in der nächsten Zeile dass x Sekunden (also immer noch die Gesamtanzahl) y volle Minuten enthalten. Das sind aber nicht die Restminuten, nachdem du die Stunden abgezogen hast (denn das passiert nirgendwo). Als Beispiel: Wenn du einen Wert von 3600 Sekunden (also 1 Stunde) hast, dann ist dein Ergebnis: 1 Stunde und 60 Minuten. Nicht 1 Stunde und 0 Minuten, wie es sein sollte. Halte dich an mein Beispiel (mit deiner Eingabe und Ausgabe), dann passt es.
-
Heinerich schrieb:
_matze schrieb:
Doch, klar geht das! Kopier mal den ganzen Code hier in eine main:
int h,m,s,rest=3661; h=rest/3600; rest=rest%3600; m=rest/60; rest=rest%60; s=rest; char str[256]; sprintf_s(str,256,"h: %d, m: %d, s: %d\n",h,m,s); printf(str); getchar();
Du wirst sehen, dass er 1 Stunde (3600 sek), 1 Minute (60 sek) und 1 Sekunde (1 sek
) ausgibt. Und das klappt sogar auch mit anderen Werten!
Wenn du mir nicht sagen kannst wie ich nach der ersten Teilung auf die verbleibenden Sekunden zugreifen kann, wirst du mir nicht helfen können.
Nach der ersten Teilung "Stunden=GesamtSekunden/3600" kommst du an die Restsekunden, indem du den Modulo-Operator ("%") einsetzt: "GesamtSekunden=GesamtSekunden % 3600". Das siehst du auch an meinem Beispiel.
Das was du geschrieben hast ist aber reines C und kein C++ und wir sind hier im C++/CLI. Meiner Meinung nach fehlt bei dir doch die Eingabe der Sekunden.
Und das geht doch unter C mit scanf(%d, &sekunden);
Ich erhalte bei deinem Programm die Fehlermeldungen
Ich habe Visual Studio C++ 2005 Express[code] error C3861: "sprintf_s": Bezeichner wurde nicht gefunden. error C3861: "printf": Bezeichner wurde nicht gefunden. error C3861: "getchar": Bezeichner wurde nicht gefunden.
[/code]
Wenn ich es so unter C++/CLI schreibe zeigt mir die Stunden aber auch die kompletten Minuten an und die Sekunden
[/cpp][code]
Int32 stunden, minuten, sekunden;
Console::Write("\nBitte geben sie die Sekunden ein: = ");
sekunden=Convert::ToInt32(Console::ReadLine());
stunden = sekunden / 3600;
minuten = sekunden / 60;
sekunden = sekunden % 60;
Console::WriteLine("\n Stunden {0} Minuten {1} Sekunden {2} \n\n", stunden, minuten, sekunden);[/cpp][code]
Hallo matze
So funktioniert es in C++/CLI
[cpp][code]
stunden = eingabe / 3600;
sekunden = eingabe - stunden * 3600;
minuten = sekunden / 60;
sekunden = sekunden % 60;
[/cpp][/code]
Vielen Dank für deine Bemühungen
-
Heinerich schrieb:
sekunden = eingabe - stunden * 3600;
Diese Zeile ist nicht ganz so schön. Das kannst du ebenfalls mit dem Modulo-Operator machen (hast du bei den Sekunden ja auch getan). Na ja, hauptsache es läuft!
Heinerich schrieb:
Vielen Dank für deine Bemühungen
Gern geschehen.
P.S.: Sieh dir die Sache mit den Code-Tags am besten noch mal an.