Info2P5/28.5.2_zeitadd.c
2025-05-23 07:32:31 +02:00

57 lines
1.9 KiB
C

#include <stdio.h>
// Definition einer Struktur zur Speicherung von Zeitangaben
struct zeit {
int tag; // Tage
int std; // Stunden
int min; // Minuten
int sek; // Sekunden
};
// Funktion: Wandelt eine Zeitstruktur in die Gesamtanzahl an Sekunden um
unsigned long zeit_in_sek(struct zeit z) {
// 1 Tag = 86400 Sekunden, 1 Stunde = 3600 Sekunden, 1 Minute = 60 Sekunden
return z.tag * 86400 + z.std * 3600 + z.min * 60 + z.sek;
}
// Funktion: Wandelt eine Anzahl von Sekunden in eine Zeitstruktur um
struct zeit sek_in_zeit(unsigned long sek) {
struct zeit z;
z.tag = sek / 86400; // Ganze Tage berechnen
sek %= 86400; // Restsekunden nach Tagen
z.std = sek / 3600; // Ganze Stunden berechnen
sek %= 3600; // Restsekunden nach Stunden
z.min = sek / 60; // Ganze Minuten berechnen
z.sek = sek % 60; // Restsekunden nach Minuten
return z;
}
int main() {
struct zeit z1, z2, summe; // Zeitstrukturen für die beiden Eingaben und die Summe
unsigned long s1, s2, sgesamt; // Variablen für die Sekundenwerte
// Eingabe der ersten Zeit im Format tt.hh.mm.ss
printf("Gib 1. Zeit ein (tt.hh.mm.ss): ");
scanf("%d.%d.%d.%d", &z1.tag, &z1.std, &z1.min, &z1.sek);
// Eingabe der zweiten Zeit im gleichen Format
printf("Gib 2. Zeit ein (tt.hh.mm.ss): ");
scanf("%d.%d.%d.%d", &z2.tag, &z2.std, &z2.min, &z2.sek);
// Umwandlung der beiden Zeiten in Sekunden
s1 = zeit_in_sek(z1);
s2 = zeit_in_sek(z2);
// Addition der Sekundenwerte
sgesamt = s1 + s2;
// Umwandlung der Gesamtsumme der Sekunden zurück in eine Zeitstruktur
summe = sek_in_zeit(sgesamt);
// Ausgabe des Ergebnisses in Tagen, Stunden, Minuten, Sekunden und Gesamtsekunden
printf("= %d Tage, %d:%d:%d; %lu Gesamtsekunden\n",
summe.tag, summe.std, summe.min, summe.sek, sgesamt);
return 0;
}