Installiere die Dokumente-Online App

<
>
Download
Dokumenttyp

Hausübung
Informatik

Universität, Schule

HTL St.Pölten

Note, Lehrer, Jahr

1, Dollar, 2011

Autor / Copyright
Vera B. ©
Metadaten
Preis 7.20
Format: pdf
Größe: 0.62 Mb
Ohne Kopierschutz
Bewertung
sternsternsternstern_0.2stern_0.3
ID# 54413







Programmieren mit C


Hausübung 6


Name:
Klasse/ Katalognr.: 1BHIF / 03
Aufnamenummer: 20130235
Programmname: hue06_.c
Termin: 24. April 2015
Abgabe: 30. April 2015
Programmbeschreibung: Es ist ein Programm zu schreiben, dass die für ein bestimmtes Geburtsdatum aktuellen Biorythmuswerte eines Menschen für das aktuelle Systemdatum und die nächsten 29 Tage in geeigneter Form am Bildschirm darstellt. Dabei ist das Geburtsdatum über die Tastatur einzulesen.


Inhalt



Angabe

Es ist ein Programm zu schreiben, dass die für ein bestimmtes Geburtsdatum aktuellen Biorythmuswerte eines Menschen für das aktuelle Systemdatum und die nächsten 29 Tage in geeigneter Form am Bildschirm darstellt. Dabei ist das Geburtsdatum über die Tastatur einzulesen.

Für jeden der drei Bereiche

physisch (p)

emotinell (e)

geistig (g)

kann der Biorythmuswert (zwischen -1.0 und 1.0) wie folgt berechnet werden:

d….Anzahl der gelebten Tage

dp….Divisionsrest von d durch 23

de….Divisionsrest von d durch 28

d….Divisionsrest von d durch 33 Nun ergibt sich:

Hinweise:

sin(x) kann mit Hilfe der Bibliotheksfunktion

double sin double(x); <math.h> berechnet werden. In <math.h> ist auch die Preprozessorkonstante M_PI für π definiert.

Zerlegen Sie das Problem soweit wie möglich in Funktionen. Es sind wenigstens folgende Funktionen bindend:

int pruefeDatum(int tag, int monat, int jahr);

Prüft, ob das übergebene Datum gültig ist. Schaltjahre sind zu berücksichtigen.

int tage(int t1, int m1, int j1, int t2, int m2, int j2);

Berechnet die Tage, die zwischen den beiden Datumswerten t1/m1/j1 und t2/m2/j2 vergangen sind. – double physisch(int tage);

double emotionell(int tage); double geistig(int tage);


Beachte bei der Implementierung die folgenden Punkte:

In einer Tabelle sind die Biorythmuswerte für das heutige Datum (Systemdatum) und die nächsten 29 Tage darzustellen.

Das Geburtsdatum ist in der Form tt.mm.yyyy im Hauptprogramm gesichert einzulesen. Es muss gültig sein und darf nicht in der Zukunft liegen.

Testwerte für die Funktion tage()


Datum 1

Datum 2

Tage

28.02.2003

01.03.2003

1

27.07.2000

12.02.2007

2391

01.01.2000

31.12.2001

730

25.12.1988

13.12.2007

6927

Mit den folgenden Funktionen kann das aktuelle Systemdatum ermittelt werden (es ist time.h erforderlich):


1 int aktTag()

2 {

3 time_t sec;

4 struct tm *sys;

5 time(&sec);

6 sys = localtime(&sec);

7 return sys->tm_mday;

8 }

9 int aktMonat()

10 {

11 time_t sec;

12 struct tm *sys;

13 time(&sec);

14 sys = localtime(&sec);

15 return sys->tm_mon + 1;

16 }

17 int aktJahr()

18 {

19 time_t sec;

20 struct tm *sys;

21 time(&sec);

22 sys = localtime(&sec);

23 return sys->tm_year + 1900;

Download C Programm: Bestimmten des Biorythmus nach Geburts­da­tum: Hausübung C Program­mie­ren, C, C#
• Download Link zum vollständigen und leserlichen Text
• Dies ist eine Tauschbörse für Dokumente
• Laden sie ein Dokument hinauf, und sie erhalten dieses kostenlos
• Alternativ können Sie das Dokument auch kаufen
Dieser Textabschnitt ist in der Vorschau nicht sichtbar.
Bitte Dokument downloaden.

47 int fehler = 0;

48 printf("Herzlich Willkommen im Biorhythmus-Kalender von ");

49

50 // Bestimmung des heutigen Datums

51 heute_tag = aktTag();

52 heute_monat = aktMonat();

53 heute_jahr = aktJahr();

54

55 printf("\nHeute ist der %02d.%02d.%4d",heute_tag,heute_monat,heute_jahr);

56 printf("\nBitte geben Sie Ihr Geburtsdatum ein (dd.mm.jjjj) --> ");

57 do

58 {

59 fehler = 0;

60 fflush(stdin);

61 ge = scanf("%d.%d.%d%c",&geb_tag,&geb_monat,&geb_jahr,&ch);

62 if (ch != '\n' || ge != 4)

63 {

64 printf("\n\nSie haben offensichtlich kein gueltiges Datum eingegeben! FEHLER!\n");

65 printf("Bitte geben Sie Ihr Geburtsdatum ein (dd.mm.jjjj) --> ");

66 fehler++;

67 }

68

69 // Ueberprueft das Datum

70 if (!fehler && datum_ueberpruefen(geb_jahr,geb_monat,geb_tag))

71 fehler++;

72 }

73 while (fehler);

74 // AUSGABE + Berechnen der Anzahl der Tage

75 ausgabe(anzahl_tage(heute_tag,heute_monat,heute_jahr,geb_tag,geb_monat,geb_jahr /* Berechnen der Anzahl der Tage*/));

76

77 return 0;

78 }

79

80 // FUNKTIONEN

81 // Ueberprueft das Datum auf seine Richtigkeit

82 int datum_ueberpruefen(int fjahr, int fmonat, int ftag)

83 {

84 int ffehler = 0; // Ob ein Fehler passiert ist

85 if (fjahr < 1850) // Wenn das Jahr <1850

86 {

87 printf("\n\nSie sind wirklich vor 1850 geboren? Das glaube ich Ihnen nicht!");

88 ffehler++;

89 }

90

91 else if (fmonat <1 || fmonat >12) // Monat ungueltig

92 {

93 printf("\n\nDer Monat ist ungueltig!");

94 ffehler++;

95 }

96 else if (ftag <1 || ftag >31) // Tag ungueltig

97 {

98 printf("Der Tag ist ungueltig!");

99 ffehler++;

Dieser Textabschnitt ist in der Vorschau nicht sichtbar.
Bitte Dokument downloaden.

125 printf("\n\nBitte ueberpruefen Sie den Tag!");

126 ffehler++;

127 }

128 }

129 else

130 {

131 if (fmonat ==1 || fmonat == 3 || fmonat == 5 || fmonat == 7 || fmonat == 8 || fmonat == 10 || fmonat == 12)

132 {

133 if (ftag > 31)

134 {

135 printf("\n\nDieser Monat hat nur 31 Tage - bitte korrigieren Sie den Geburtstag!");

136 ffehler++;

137 }

138 else if (ftag <1)

139 {

140 printf("\n\nDer Tag ist ungueltig!");

141 ffehler++;

142 }

143 }

144 else if (fmonat == 2 && (ftag >28 || ftag <1))

145 {

146 printf("\n\nBitte korrigieren Sie den Tag!");

147 ffehler++;

148 }

149 else if (ftag > 30)

150 {

151 printf("\n\nDieser Monat hat nur 30 Tage - bitte korrigieren Sie den Geburtstag!");

152 ffehler++;

Dieser Textabschnitt ist in der Vorschau nicht sichtbar.
Bitte Dokument downloaden.

176 // Erstes Jahr

177 switch (fgeburtsmonat) // Berechnen der Summe der Tage im 1. Jahr

178 {

179 case 1:

180 summe_tage += 31;

181 case 2:

182 if (schaltjahr(fgeburtsjahr))

183 {

184 summe_tage +=29;

185 }

186 else

187 {

188 summe_tage +=28;

189 }

190 case 3:

191 summe_tage += 31;

192 case 4:

193 summe_tage += 30;

194 case 5:

195 summe_tage += 31;

196 case 6:

197 summe_tage += 30;

198 case 7:

199 summe_tage += 31;

200 case 8:

201 summe_tage += 31;

202 case 9:

203 summe_tage += 30;

204 case 10:

205 summe_tage += 31;

206 case 11:

207 summe_tage += 30;

208 case 12:

209 summe_tage += 31;

210 break;

211 }

212 summe_tage -= fgeburtstag; // Abziehen der bereits vergangenen Tage im Geburtsmonat

213 if (fgeburtsjahr == fheute_jahr && schaltjahr(fgeburtsjahr))

214 {

215 summe_tage -= 366;

216 }

217 else if (fgeburtsjahr == fheute_jahr)

Dieser Textabschnitt ist in der Vorschau nicht sichtbar.
Bitte Dokument downloaden.

261 break;

262 }

263 summe_tage += fheute_tag; // Dazurechnen der Tage im jetzigen Monat

264 return summe_tage;

265 }

266

267 // Berechnet den physischen Wert fuer das jeweilige Datum

268 double physisch(int tage)

269 {

270 double fwert_physisch = 0;

271 fwert_physisch = sin((2 * (tage%23) * M_PI)/23);

272 return fwert_physisch;

273 }

274

275 // Berechnet den emotionellen Wert fuer das jeweilige Datum

276 double emotionell(int tage)

277 {

278 double fwert_emotionell = 0;

279 fwert_emotionell = sin((2*(tage%28)*M_PI)/28);

280 return fwert_emotionell;

281 }

282

283 // Berechnet den geistigen Wert fuer das jeweilige Datum

284 double geistig(int tage)

285 {

286 double fwert_geistig = 0;

287 fwert_geistig = sin((2*(tage%33)*M_PI)/33);

288 return fwert_geistig;

289 }

290

291 // Gibt den Biorhythmus fuer .....[Volltext lesen]

Dieser Textabschnitt ist in der Vorschau nicht sichtbar.
Bitte Dokument downloaden.

316 int aktMonat(void)

317 {

318 time_t sec;

319 struct tm *sys;

320 time(&sec);

321 sys = localtime(&sec);

322 return sys->tm_mon + 1;

323 }

324

325 // Liefert das aktuelle Jahr fuer das heutige Datum

326 int aktJahr(void)

327 {

328 time_t sec;

329 struct tm *sys;

330 time(&sec);

331 sys = localtime(&sec);

332 return sys->tm_year + 1900;

333 }


.....


Swop your Documents

G 2 - Cached Page: Thursday 28th of March 2024 11:35:41 PM