Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

bin blutiger anfänger und komm da einfach nicht weiter, und vielleicht kann mir ja hier jemand weiterhelfen...

also ich will mit eine Uhrzeittabelle ausgeben lassen, aber NUR mit einer FOR-SCHLEIFE nämlich:

for (i=0; i<86400;i++)

und die variablen

h, m, s sollen mit modulo-operator und divisions-operator errechnet werden

es soll dann wie folgt ausgegeben werden

Uhrzeit 00:00:00

Uhrzeit 00:00:01

...

Uhrzeit 00:00:59

Uhrzeit 00:01:00

..

Uhrzeit 23:59:59

das was ich jetzt so hab schaut folgendermaßen aus:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void)

{

int i,h,m,s;

for (i=0;i<86400;i++)

{

printf("Uhrzeit %02d:%02d:%02d\n",i%24,i%60,i%60);

}

return 0;

}

aber er zählt zwar bist 23 und 59 aber hald leider nicht so wie ich das will!!!

BIN ÜBER JEDE HILFE DANKBAR!!!!!!

Gruß Nik

Geschrieben

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void)

{

int i,h,m,s;

for (i=0;i<86400;i++)

{

h = i/3600;

m = i/60;

s = i;

printf("Uhrzeit %02d:%02d:%02d\n",h%24,m%60,s%60);

}

return 0;

}

ist ja klar das h, m und s noch umgerechnet werden müssen...

trotzdem verstehe ich nicht was dieses h%24, m%60 und s%60 wirklich bewirkt, klar ist das dieser wert nicht erreicht wird aber ganz ehrlich das war mehr zufall....

DANKE schon mal

Gruß Nik

Geschrieben

Du möchtest bitte das nächste Mal die Code-Tags verwenden

for (i=0;i<86400;i++)

86400 Sekunden = 24 Stunden

Überlege Dir bitte auf einem Blatt Papier, wie man Sekunden, in Minuten und Minuten in Stunden umrechnet. Denn das ist genau das, was Dein Programm machen muss

Geschrieben (bearbeitet)

//...

for (int i = 0; i < 86400; ++i) {

    printf("  %5d sec = %02d:%02d:%02d\n", i, i/3600, (i/60)%60, i%60);

}

Modulo (a%B) liefert den Rest einer Division zurück.

Wäre a = 3 und b = 2, dann wäre 3%2 = 1 da 3/2 = 1 mit Rest 1 ergibt.

Noch eine kleine Info, damit Du den Code oben verstehst:

(i/60)%60 ergibt die Minuten, weil i/60 den Wert vor dem Komma ergibt weil die Variable i als Integer - also Ganzzahl - definiert ist. (Nachkommastellen wären in diesem Fall die Sekunden...)

Bei Integer-Rechnungen mit Nachkommastellen werden diese in C einfach "abgeschnitten".

Diese Zahl Modulo 60 ergibt dann die eigentliche Minute, da damit der Stundenanteil eliminiert wird...

Ist vielleicht ein wenig kompliziert aber wenn Du da mal in Ruhe drüber guckst, verstehst Du das schon.

PS: Das da oben kommt raus, wenn du diese Code-Tags benutzt - eine formatierte Ausgabe.

Bearbeitet von InfoJunkie

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...