/* == zeitrech.c -- stellt eine Uhrzeit um n Sekunden vor ===================================== */ /* -- includes -------------------------------------------------------------------------------- */ #include #include #include /* -- main() ---------------------------------------------------------------------------------- */ int main(void){ short h, m, s, nh, nm, ns; long long divn, sumn, n; /* - Eingabe der Uhrzeit mit kleiner Eingabekontrolle --------------------------------- */ do{ printf("+ Geben Sie eine Uhrzeit ein (hh:mm:ss-Format): "); }while( (scanf("%hd:%hd:%hd", &h, &m, &s)!=3 && printf("! Falsches Format, hh:mm:ss muss eingehalten werden!\n")) || ((h>23 || h<0 || m>59 || m<0 || s>59 || s<0) && printf("! Diese Uhrzeit gibt es nicht!\n"))); /* --> für richtige Eingabekontrolle müsste die Zeit als eine Zeichenkette eingelesen und dann nach int geparst werden; dies würde hier aber den Rahmen des kleinen Programms sprengen :o) */ do{ printf("+ Um wieviel Sekunden vorstellen (< 32 Bit, ca. 9 Trillionen)?: "); }while((scanf("%Ld", &n)!=1 && printf("! Falsche Eingabe!\n")) || (n<0 && printf("! n muss groesser 0 sein!\n"))); /* - Berechnung der neuen Uhrzeit mit / und % ----------------------------------------- */ sumn=n+s; //zunächst die Sekunden der Uhrzeit zu n addieren divn=sumn/60; //nun die Anzahl der zu addierenden Minuten berechnen ns=sumn%60; //Sekunden der neuen Uhrzeit abtrennen sumn=divn+m; //... divn=sumn/60; nm=sumn%60; sumn=divn+h; divn=sumn/24; nh=sumn%24; /* - neue Uhrzeit ausgeben ------------------------------------------------------------ */ printf( "+ Uhrzeit %hd:%hd:%hd Uhr um %Ld s vorgestellt auf: " "%hd:%hd:%hd Uhr ", h, m, s, n, nh, nm, ns); (divn!=0) ? printf("(+%Ld Tag%s)\n", divn, (divn!=1) ? "e" : "") : printf("\n\n"); return 0; }