Übungsblatt

Die Fragestellung:
Ein Programm soll einen eingelesenen ganzzahligen, nichtnegativen Sekundenbetrag in
die Darstellung Wochen, Tage, Stunden, Minuten, Sekunden umwandeln und ausgeben.
Beispiel: 6574548s = 10 Wochen, 6 Tage, 2:15:48 Stunden.
Beachten Sie:
Die Ausgaben ?Woche? bzw. ?Wochen? und ?Tag? bzw. ?Tage? sollen sprachlich korrekt
erfolgen, also z. B. ?1 Tag?, aber ?3 Tage? !
In einem Programmlauf soll mehr als ein Sekundenwert umgewandelt werden können!
Überlegen Sie sich dazu ein geeignetes Abbruchkriterium.


Ich habe jetzt angefangen zu schreiben und bin soweit gekommen. Bekomme Wochen und Tage richtig raus, aber bei Stunden kommen nicht die Werte...

#include <stdlib.h>
#include <stdio.h>



int main (void)
{

int sekunden=0, minuten=0, stunden=0, tage=0, min=0, std=0, wochen=0, tag=0, woche=0, sek=0;

printf("Die Sekunden eingeben:\n\n");
scanf("%i",&sekunden);

minuten=sekunden/60;
stunden=minuten/60;
tage=stunden/24;
wochen=tage/7;
tage=(stunden/24)-wochen*(7);
std=wochen-stunden;



printf("%i Wochen, %i Tage, %i : %i : %i Stunden\n\n",wochen, tage, std, min, sek);
system("pause");
 
Versuche mal einen Ansatz mit "Restteilung". Also mit Resten zu arbeiten (Stichwort Modulodivision). Der folgende Code funktioniert bei mir wie gewünscht:
Code:
const int MINUTE=60;
const int STUNDE=MINUTE*60;
const int TAG=24*STUNDE;
const int WOCHE=7*TAG;

printf("Die Sekunden eingeben:\n\n");
scanf("%i",&sekunden);

wochen=sekunden/WOCHE;
tage=(sekunden%WOCHE)/TAG;  // Modulodivision gibt den Rest zurück.
//z.B sind 6574548 sekunden = 10 Wochen... Rest= 526548 Sekunden
// daraus bilden wir die Tage, sind 6, Rest=xyz usw.
 
Ohne Modulodivision siehts dann so aus ;)

Code:
wochen = sekunden/woche;
    sekunden -= wochen * woche;
tage = sekunden/tag;
    sekunden -= tage * tag;
...
 
Zurück
Oben