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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...