Funktion funktioniert nicht
-
Hi,
Ich hatte Gestern ein Programm geschrieben (aber auch nur mit Hilfe
), welches mir die Schaltjahre angibt. Ich wollte heute ein wenig die Funktionen üben und dachte mir als Grundlage könnte ich dieses Programm nutzen. Natürlich funktioniert es nicht
.
// Schaltjahr.h int Schaltjahr (int iJahr) { return (iJahr % 4 == 0 && iJahr % 100 != 0 || iJahr % 400 == 0); }
// Jahr.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung. // #include "stdafx.h" #include "Schaltjahr.h" #include <iostream.h> int iJahr; // Funktionsprototyp int Schaltjahr (int iJahr); int main(int argc, char* argv[]) { int i = 0; while(i == 0) { cout << "Geben Sie das Jahr ein, von dem Sie wissen moechten ob es ein Schaltjahr ist.\n(3) Um das Programm zu beenden\n"; cin >> iJahr; if(iJahr == 0) { break; } else if(Schaltjahr == 0) { cout << "Das angegebene Jahr ist ein Schaltjahr.\n" << endl; } else { cout << "Das angegebene Jahr ist kein Schaltjahr.\n" << endl; } } return 0; }
-
Was genau geht denn nicht ?
-
Er sagt zu jedem Jahr, dass es kein Schaltjahr ist.
-
Damit eine Funktion "funktioniert", musst du sie aufrufen.
if(Schaltjahr(iJahr) == 0)
-
Ist mir gerade aufgefallen:
Du hast einen bösen Fehler in deinem Code! iJahr ist global und gleichzeitig ein Parameter von Schaltjahr. Das führt zu furchtbar unübersichtlichem Code, da sich die beiden Variablen gegenseitig überdecken (in Schaltjahr gilt der Parameter, sonst die globale Variable).
-
bool Schaltjahr (int iJahr) { return (iJahr % 4 == 0 && iJahr % 100 != 0 || iJahr % 400 == 0); } int main() { for(int i=1990;i<=2010;i++) std::cout<<i<<" ist/war "<<(Schaltjahr(i)?"ein":"kein")<<" Schaltjahr"<<"\n"; std::cout<<std::endl; }
<edit>
Jaja, man wird älter... und sollte auch nicht zwischendurch was essen gehen
</edit>
-
@cd9000
Also müsste ich der Funktion keine Parameter übergeben.Wenn ich eine Funktion aufrufe, der ich zuerst einen Parameter von einer lokalen Variable zugewiesen habe auch beim Aufruf die Parameter angeben?
// Aufruf der Funktion Funktion (int Parameter);
Diesen Code verstehe ich noch nicht ganz. Was bedeutet bool und std::cout<<i<<
-
Hier gibt es eine ganze Menge zu bool:
http://www.glenmccl.com/bool_cmp.htm
und hier was zu std:
http://www.voyager.prima.de/cpp/usingstd.html
-
das std ist nur ein Präfix für den Namspace. Das hast du umgangen, indem
du die veraltete <iostream.h> eingebunden hast. Hübscher wäre:#include <iostream> using namspace std;
Damit kannst du wie gehabt (und ohne std:: ) weitermachen und bist wieder
up do date.Wie lernst du C++? Vielleicht solltest du dir mal ein gutes Buch oder Tuturial
vorknöpfen, da lernst du das allesFindest du zB unter http://www.c-plusplus.net/index.php unter Tututrials oder Bücher :p
-
Herzlichen Dank
@Taurin
Ich hatte schon ein Buch, aber das ist irgendwie nicht so gut wie ich dachte.Dort stand bisher auch nichts über bool oder iostream nur iostream.h.
-
FUNPAQ schrieb:
Ich hatte schon ein Buch, aber das ist irgendwie nicht so gut wie ich dachte.
Dort stand bisher auch nichts über bool oder iostream nur iostream.h.
Vielleicht ist es nur ein bißchen älter