C Programm Schaltjahr
-
Hallo zusammen
Wir haben in der Schule C++ und ich bin bei einer Aufgabe stecken geblieben.
Aufgabenstellung:
– Schreiben Sie eine Funktion, die als Eingabewert eine Jahreszahl erhält und als Rückgabe einen bool-Wert liefert.
– Die Funktion soll das eingegebene Jahr prüfen.
– Wenn es ein Schaltjahr ist, gibt die Funktion true zurück, sonst false.
Im ursprünglichen C gibt es den Datentyp bool nicht.
Es gelten folgende Vereinbarungen:
Als Datentyp wird ein Integer-Typ verwendet
0 wird al FALSE interpretiert
1 wird als TRUE interpretiertich habe ein Programm welches als ausgangslage gilt. leider funktioniert es nicht. nachdem ich das Schaltjahr eingegeben habe schlisst sich das Fenster.
Bin Dankbar für jede Hilfe
#include <iostream>using namespace std;
bool istSchaltjahr(int einJahr);
int main() {
int jahr;cout << "Eingabe einer Jahreszahl: ";
cin >> jahr;if (istSchaltjahr(jahr))
cout << jahr << " ist ein Schaltjahr." << endl;
else
cout << jahr << " ist KEIN Schaltjahr." << endl;return 0;
}bool istSchaltjahr(int jahr) {
if (jahr % 400 == 0) // Regel C
return true;
if (jahr % 100 == 0) // Regel B
return false;
if (jahr % 4 == 0) // Regel A
return true;
return false;
}Gruss Alex.
-
Guck mal hier unter "Schließen verhindern" oder so
-
hehe ich glaube er brauch nur das prog ohne debugger öffnen^^. das da am ende die zeile da steht "bla bla taste drücken um zu beenden blabla" oder so. wenn er mit debugger startet wird dieser schritt einfach übersprungen.
-
Schreibe einfach am Ende system("pause"); (getestet auf Visual Studio) um das Schliessen zu verhindern.
lg
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
bool istSchaltjahr(int jahr) { if (jahr % 400 == 0) // Regel C return true; if (jahr % 100 == 0) // Regel B return false; if (jahr % 4 == 0) // Regel A return true; return false; // Funktion gibt }
wird da nicht immer false zurück gegeben?
-
du hast die abfrage fürs schaltjahr falsch gemacht: du überprüfst nämlich so:
wenn das jahr durch 400 ganzzahlig teilbar ist, dann ist es ein schaltjahr.
wenn das jahr durch 100 ganzzahlig teilbar ist, dann ist es kein schaltjahr.
wenn das jahr durch 4 teilbar ist, dann ist es ein schaltjahr.
ansonsten ist es kein schaltjahr.die richte abfrage geht aber so:
das jahr ist ein Schaltjahranwärter, wenn durch es durch 4 teilbar ist, aber wenn es durch 100 teilbar ist, dann ist es kein SJ außer es ist auch noch durch
400 teilbar, dann ist es wieder ein schaltjahr.if (jahr % 4 == 0) { if (jahr % 100 == 0) { if (jahr % 400 == 0) { return true; } else { return false; } } else { return true; } } else { return false; }
mfg Gaste
-
Hi Leute. Danke für die Hilfe.
Das Problem besteht immer noch. Wenn ihr das Programm laufen lässt und man nach der Eingabe der Jahreszahl "Enter" drückt schliesst sich das Fenster anstatt den Text "ist ein/kein Schaltjahr".
irgendetwas stimmt das doch nicht mit dem code.Vielen Vielen Dank
Ich schulde euch was
-
Hast du dir mal den FAQ-Beitrag zum Thema "Automatisches Schließen verhindern" durchgelesen? und auch umgesetzt?
(wenn alles nicht hilft, öffne doch einfach eine Eingabeaufforderung und starte dein Programm von dort aus :D)
-
Wenn alles nichts hilft:
cin.get();
cin.sync();Dadurch verhinderst du auf saubere Art und Weise das Schliessen der console.
cin.sync() ist in deinem Beispiel nicht notwendig aber dadurch kannst du verhindern das du aus Versehen mehrere Eingaben auf einmal machst obwohl du das nicht willst. (Wenn du mal irgendwann ein Programm schreibst wo cin.get() oft genutzt wird, wirst du merken was ich meine, nur so als Hilfe.)
Frag mich jetzt aber bitte nicht was cin.sync() im genauen macht. ^^