/* Een terugblik op functie, struct en array */

#include <stdio.h>	/* nodig voor gebruik printf (schrijven naar scherm),
                 	                     en scanf (lezen uit toetsenbord) */

struct Tijdsduur {	/* Een Tijdsduur bestaat uit:  */
	int uur;     	/*    een aantal uren en       */
	int min;     	/*    een aantal minuten.      */
};

/* Deze functie drukt een Tijdsduur af */
void drukaf(struct Tijdsduur td) {
	if (td.uur==0)
		printf("           %2d minuten\n", td.min);
	else
		printf("%3d uur en %2d minuten\n", td.uur, td.min);
}

/* Deze functie drukt een rij met n gewerkte tijden af */
void drukafRij(struct Tijdsduur trij[], int n) {
	int teller;
	for (teller=0;teller<n;++teller)
		drukaf(trij[teller]);
}

/* Deze functie berekent de totaal gewerkte tijd
	uit een rij met n gewerkte tijden */
struct Tijdsduur som(struct Tijdsduur trij[], int n) {
	int teller;
	struct Tijdsduur s;
	s.uur=s.min=0;
	for (teller=0;teller<n;++teller) {
		s.uur+=trij[teller].uur;
		s.min+=trij[teller].min;
	}
	s.uur+=s.min/60;
	s.min%=60;
	return s;
}

#define MAX	5

int main () {
	struct Tijdsduur rij[MAX];
	int aantal=0, gelezen;
	do {
		printf("Type gewerkte uren en minuten in (of Ctrl-Z): ");
		gelezen=scanf("%d%d", &rij[aantal].uur, &rij[aantal].min);
	}
	while (gelezen==2 && ++aantal<MAX);
	printf("\n\n");
	drukafRij(rij, aantal);
	printf("De totaal gewerkte tijd is:\n");
	drukaf(som(rij, aantal));
	getchar(); getchar();
	return 0;
}
