Kapitel 6 - Programm 16 - ZEIT.CPP

zurück...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
					   // Kapitel 6 - Programm 16 - ZEIT.CPP

#include <stdio.h>	   // Für die Funktion sprintf
#include <time.h>          // Für die Funktionen time & localtime
#include "zeit.h"          // Für den Kopf der Klasse

char Tageszeit::Format;  // Definition des statischen Elementes
char Tageszeit::AusZeichenkette[25];  // Definition der Zeichenkette

	   // Konstruktor - Setze aktuelle Zeit und
	   //               Format auf 1
Tageszeit::Tageszeit(void)
{
time_t ZeitDatum;
struct tm *AktuelleZeit;

   ZeitDatum    = time(NULL);
   AktuelleZeit = localtime(&ZeitDatum);
   Stunde	    = AktuelleZeit->tm_hour;
   Minute	    = AktuelleZeit->tm_min;
   Sekunde	    = AktuelleZeit->tm_sec;

   Format	    = 1;
}

	   // Setze die Zeit auf Eingabewerte
	   //  Rückgabe = 0 ---> Daten sind ok
	   //  Rückgabe = 1 ---> Etwas außerhalb des Limits
int Tageszeit::SetzeZeit(void)	   {return SetzeZeit(0, 0, 0); };
int Tageszeit::SetzeZeit(int H)	   {return SetzeZeit(H, 0, 0); };
int Tageszeit::SetzeZeit(int H, int M) {return SetzeZeit(H, M, 0); };
int Tageszeit::SetzeZeit(int EinStunde, int EinMinute, int EinSekunde)
{
int Fehler = 0;

   if (EinStunde < 0)
   {
	EinStunde = 0;
	Fehler = 1;
   }
   else if (EinStunde > 59)
   {
	EinStunde = 59;
	Fehler = 1;
   }
   Stunde = EinStunde;

   if (EinMinute < 0)
   {
	EinMinute = 0;
	Fehler = 1;
   }
   else if (EinMinute > 59)
   {
	EinMinute = 59;
	Fehler = 1;
   }
   Minute = EinMinute;

   if (EinSekunde < 0)
   {
	EinSekunde = 0;
	Fehler = 1;
   }
   else if (EinSekunde > 59)
   {
	EinSekunde = 59;
	Fehler = 1;
   }
   Sekunde = EinSekunde;

   return Fehler;
}

	   // Gib eine ASCII-Z Zeichenkette gemäß Ausgabeformat zurück
	   //  Format = 1    13:23:12
	   //  Format = 2    13:23
	   //  Format = 3     1:23 PM
char *Tageszeit::HoleFormatierteZeit(void)
{
   switch (Format)
   {
	case 2  : sprintf(AusZeichenkette, "%2d:%02d", Stunde, Minute);
		    break;

	case 3  : if (Stunde == 0)
			 sprintf(AusZeichenkette, "12:%02d AM", Minute);
		    else if (Stunde < 12)
			 sprintf(AusZeichenkette, "%2d:%02d AM", Stunde, Minute);
		    else if (Stunde == 12)
			 sprintf(AusZeichenkette, "12:%02d PM", Minute);
		    else
			 sprintf(AusZeichenkette, "%2d:%02d PM",
								 Stunde - 12, Minute);
		    break;

	case 1  : // weiter zum Standard, Standardausgabe ist also immer 1
	default : sprintf(AusZeichenkette, "%2d:%02d:%02d",
							     Stunde, Minute, Sekunde);
		    break;
   }

   return AusZeichenkette;
}

zurück...