Funktionen die bool zurückgeben ?
-
Hallo ! Ich hab mal ne frage so am frühen abend :
Ich wollte mal ein Beispiel aus meinem Buch nachproggen ! Ich soll ein Prgramm schrieben das nachguckt ob das eingegebene Jahr ein Schaltjahr ist ! Schwerpunkt liegt auf Funktionen ! Mein Ansatz :Hauptdatei.cpp
#include <iostream> #include "funktionen.h" int main() { int jahr; std::cout << "Gebe eine Jahreszahl ein : \n"; std::cin >> jahr; std::cout << "\n" << isSchaltjahr(jahr); }
Funktionen.cpp
#include <iostream> bool isSchaltjahr(int jahr) { if(jahr%4 == 0) return true; else return false; }
funktionen.h
int isSchaltjahr(int)
Mein Compiler meckert:
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""int __cdecl isSchaltjahr(int)" (?isSchaltjahr@@YAHH@Z)" in Funktion "_main". HauptDatei.obj
Fehler 2 fatal error LNK1120: 1 nicht aufgelöste externe Verweise. C:\Dokumente und Einstellungen\Simon\Eigene Dateien\Visual Studio 2008\Projects\ProjektMappe\Debug\HelloWorld.exe 1Kann mir da jemand helfen ?
-
1. Das ist ein Linker-Fehler. Hast du beide Cpp-Dateien kompiliert und dem Linker übergeben?
2. Im Header musst Du die Funktionsdeklaration mit einem ";" abschließen.
3. Volle Jahrhunderte sind auch keine Schaltjahre, es sei denn sie sind durch 400 teilbar
-
Wieso gibt deine Deklaration nicht auch einen
bool
Wert zurück, sondern einenint
Wert? Wenn du darauf keine sinnvolle Antwort findest, dann begreifst du auch, was sich der Kompiler fragtGrüssli
-
Au, da hab' ich das Kleingedruckte nicht gelesen
-
Jo ! Vielen Vielen Dank ! habe es jetzt so gelöst :
int isSchaltjahr(int jahr) { if(jahr%4 == 0) return true; else return false; }
kleine Frage am Rande : Ist es Möglich das "true" bzw. "false" als Wort angezeigt wird ohne gleich an die if's zu müssen ?
-
Besser wäre es wohl deine Funktion wieder bool zurückgeben zu lassen (im Header und in der cpp).
und ja, du kannst die Wörter true oder false ausgeben lassen. Dafür gibt es den Streammodifizierer boolalpha.std::cout << "\n" << boolalpha << isSchaltjahr(jahr);
siehe auch
http://www.cplusplus.com/reference/iostream/manipulators/boolalpha.html
-
fett ! Vielen Dank leutz ! Ihr seid echt der Hammer !
-
FedoX schrieb:
...
..."Gebe eine ...
Übrigens (muss hier mal die Seuche brandmarken): Der Imperativ von "geben" lautet: "gib" !!
Es heißt ja auch nicht "Er gebt eine Zahl ein"... (s.a. "unregelmäßige Verben")So auch:
helfen -> hilf
essen -> iss
nehmen -> nimm
...Gruß,
Simon2.
-
kürzeren code mit gleicher Funktionalität erhältst du mit:
int isSchaltjahr(int jahr) { return (jahr%4 == 0); }
-
muffmolch schrieb:
kürzeren code mit gleicher Funktionalität erhältst du mit:
Und warum wieder die Rückgabe als int und nicht als bool?
-
Und da die richtige Schaltjahr-Rechnung immer noch nicht engekommen ist:
Wirdbald schrieb:
Volle Jahrhunderte sind auch keine Schaltjahre, es sei denn sie sind durch 400 teilbar