Hilfe bei Programm
-
Hi Leute,
ich bräuchte mal eure Hilfe, wir sollen ein Programm mit diversen Heizregeln schreiben, bin soweit auch fertig, nur bekomme ich eine Sache nicht richtig hin.
Erstmal der Auszug aus der main.cppdo { cout << "Bitte geben Sie ein Datum ein (dd.mm.yyyy):\n"; cout << "Tag: "; cin >> Day; cout << "Monat: "; cin >> Month; cout << "Jahr: "; cin >> Year; cout << "\n"; cout << "Das eingegebene Datum ist " <<Day << "." <<Month << "." <<Year << "\n"; if (is_valid_gregor_date(Day, Month, Year)) { cout << "Dieses ist im Gregorianischen Kalender gueltig!\n"; if (is_even(Day, Month, Year)) { cout << "Dieser Tag ist gerade!\n\n"; } else { cout << "Dieser Tag ist ungerade!\n\n"; } if ( Year >= 2035 && (Year <= 2037 && Day <=20 && Month <= 3) ) { cout << "a = Raucher b = Frau c = Prof d = ueber45"; cout << "\na b c d \t1. Regelung \tNachfolgeregelung\n"; for (i=1;i<17;i++) { if (i % 2 == 0) { d = 1; } else { d = 0; } if (((i+1)/2) % 2 == 0) { c = 1; } else { c = 0; } if (((i+3)/4) % 2 == 0) { b = 1; } else { b = 0; } if (((i+7)/8) % 2 == 0) { a = 1; } else { a = 0; } cout << a << " " << b << " " << c << " " << d ; if ( may_heat_1(Day,Month,Year,a,b,c,d) && may_heat_2(Day,Month,Year,a,b) ) { cout << "\t\t 1\t\t 1\n"; } else { cout << "\t\t 0\t\t 0\n"; } } }
Also zuerst muss man ein Datum eingeben, dann wird in einer anderen Datei das Datum in einer Funktion überprüft ob es gültig ist und ob es sich um einen geraden oder einen ungeraden Tag (gerechnet ab dem 1. Januar) handelt.
Ausgegeben wird dann eine Wertetabelle und da hinter dann, ob man heizen darf oder nicht.
Leider bekomme ich es nicht hin, dass der die 1. Regelung und die Nachfolgeregelung zusammen richtig ausgibt.
Die Funktionen für die Regelung sehen so aus.bool may_heat_1(unsigned short day_in_month, unsigned short month, unsigned short year, bool a, bool b, bool c, bool d) // a = Raucher, b = Frau, c = Professor, d = Über 45 { bool isevenday; if (year > 2034) { if ( (day_in_month > 20) && (month == 12) || (month < 3) ||( day_in_month < 21 ) && ( month == 3 ) ) { isevenday = is_even(day_in_month, month, year); return !isevenday && a && b || isevenday && c && d; } else { return false; } } else { return true; } } bool may_heat_2(unsigned short day_in_month, unsigned short month, unsigned short year, bool a, bool b) // a = Raucher, b = Frau { bool isevenday; if (year > 2034) { if ( (day_in_month > 20) && (month == 12) || (month < 3) ||( day_in_month < 21 ) && ( month == 3 ) ) { isevenday = is_even(day_in_month, month, year); return !isevenday && a && b || isevenday && a && !b; } else { return false; } } else { return true; } }
Ich hoffe Ihr könnt mir weiterhelfen.
-
Und wo genau hakt es denn jetzt? ("bekomme es nicht hin" ist die wohl misterabelste Fehlerbeschreibung, die du liefern könntest)
btw, was sollen diese Heizregeln denn darstellen? An ungeraden Tagen heizen rauchende Frauen, an geraden Tagen Professoren über 45?