

/* == zeitrech.c -- stellt eine Uhrzeit um n Sekunden vor =====================================	*/


/* -- includes --------------------------------------------------------------------------------	*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>


/* -- 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;
}

