diff --git a/28.5.2.c b/28.5.2.c new file mode 100644 index 0000000..49bfa96 --- /dev/null +++ b/28.5.2.c @@ -0,0 +1,76 @@ +#include + +struct zeit // Struktur "zeit", die aus vier ganzen Zahlen (int) besteht --> Container, in dem wir verschiedene Daten zusammenfassen können +{ + int tag; // Anzahl Tage + int std; // Anzahl Stunden + int min; // Anzahl Minuten + int sek; // Anzahl Sekunden +}; + +unsigned long zeit_in_sek (struct zeit z) //Zeit-Struktur; unsigned long weil Zahl groß sein kann; Gesamtzeit in sek +{ + int gesamtSek = (z.tag*86400) + (z.std*3600) + (z.min*60) + (z.sek); // Umrechnungen in sek. --> z. greift auf Zeit-Struktur + return gesamtSek; +} + +struct zeit sek_in_zeit (unsigned long sek) // Ausgabe: Zeit-Struktur, die sek. in Tage, Stunden, Minuten angibt +{ + struct zeit umrechnung; + umrechnung.tag = sek / 86400; // Tage berechnen + sek %= 86400; // Rest berechnen und übrig lassen für weitere Berechnung + umrechnung.std = sek / 3600; // Stunden berechnen + sek %= 3600; // Rest berechnen und übrig lassen für weitere Berechnung + umrechnung.min = sek / 60; // Minuten berechnen + umrechnung.sek = sek % 60; // Rest der übrig gebliebenen Sekunden + return umrechnung; +} + +int ueberpruefe (struct zeit eingabe) // Überprüft die Eingabe, ob alle Eintragungen im erlaubten Bereich sind +{ + // Erlaubte Stunden 0-23; Erlaubte Minuten 0-59; Erlaubte Sekunden 0-59 --> Alles darüber ist ungültig + if (eingabe.std < 0 || eingabe.std >= 24 || eingabe.min < 0 || eingabe.min >= 60 || eingabe.sek < 0 || eingabe.sek >= 60) + { + return 0; + } + else return 1; +} + +int main() +{ + struct zeit zeit1; // Eingabezeit 1 + struct zeit zeit2; // Eingabezeit 2 + struct zeit zeitAdd; // Ergebnis der Addition + printf("Gib 1. Zeit ein: (tt.hh.mm.ss): "); + + if (scanf("%d.%d.%d.%d", &zeit1.tag, &zeit1.std, &zeit1.min, &zeit1.sek)!=4) //4 Angaben getrennt durch Punkt --> !=4 prüft ob genau 4 Zahlen eingegeben wurden + { + return 0; //Programm beendet + } + + if (ueberpruefe(zeit1)==0) //Prüft ob die Eingaben im gültigen Bereich liegen + { + return 0; //Programm beendet + } + + printf("Gib 2. Zeit ein: (tt.hh.mm.ss): "); //Selber Ablauf für 2 Eingabe + + if (scanf("%d.%d.%d.%d", &zeit2.tag, &zeit2.std, &zeit2.min, &zeit2.sek)!=4) + { + return 0; + } + + if (ueberpruefe(zeit2)==0) + { + return 0; + } + + int gesamtSec1 = zeit_in_sek(zeit1); //Rechnet 1. Eingabe in Sekunden um + int gesamtSec2 = zeit_in_sek(zeit2); //Rechnet 2. Eingabe in Sekunden um + int gesamtSec = gesamtSec1+gesamtSec2; //Addiert beide Sekundenzahlen + zeitAdd = sek_in_zeit(gesamtSec); //Wandelt Sekunden in Zeit-Struktur --> Ausgabe in Tage, Stunden, Minuten, Sekunden, Gesamtsekunden + + printf("\n...... = %d Tage,%d: %d.%d; %d Gesamtsekunden", zeitAdd.tag, zeitAdd.std, zeitAdd.min, zeitAdd.sek, gesamtSec); + + return 0; +} \ No newline at end of file