Fehler im Programm: "Ausdruck ergibt keine Funktion"
-
Hi ich bin neu hier,
Ich lerne grade das Basiswissen von C++ mit Hilfe des Buches "C++ für Spieleprogrammierer". Um den Lernefekt zu erhöhen probiere ich viel aus und hab jetzt ein sehr einfaches Quizspiel geschrieben.
Nach 41 Fehlern die ich berichtigen konnte bleibt ein Fehler über, den ich nicht weg bekomme...
//Quizmaster v 1.0 # include <iostream> using namespace std; // Prototype's int Game (); int Highscore (int Punkte,int Highscore); // Main int main () { //Variablen deklaieren char chMenue; int Punkte = 0; int Highscore = 0; //Schleife Menü do { cout << "Math Quizmaster " << endl; cout << "----------------" << endl; cout << "(S)piel starten" << endl; cout << "(H)ighscore" << endl; cout << "(E)nde" << endl; cout << "Bitte Menüpunkt eingeben"; cin >> chMenue; switch (chMenue) { //Spiel wird gestartet case ('S'): case ('s'): { Punkte = Game (); Highscore = Highscore (Punkte, Highscore); }break; //Spiel //Highscore wird aufgerufen case ('H'): case ('h'): { cout << "Der Aktuelle Highscore liegt bei "; cout << Highscore << " Punkten" << endl; }break; //Highscore } } while( chMenue != 'E' && chMenue != 'e'); cout << "\nDanke fürs spielen!!!!"; return 0; }//Main //Funktionen defenieren int Game () { int Punkte; int Auswaehler; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (1,2,3,4..)" << endl; cin >> Auswaehler; if (Auswaehler == 5) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (2,5,3,6,4,7..)" << endl; cin >> Auswaehler; if (Auswaehler == 5) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (2, 4, 16..)" << endl; cin >> Auswaehler; if (Auswaehler == 256) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (60,54, 42,36, 4..)" << endl; cin >> Auswaehler; if (Auswaehler == 18) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (3,7,4,6,10,7,9,13,12..)" << endl; cin >> Auswaehler; if (Auswaehler == 12) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (6, 18, 54..)" << endl; cin >> Auswaehler; if (Auswaehler == 162) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (1,9, 18, 26, 35 )" << endl; cin >> Auswaehler; if (Auswaehler == 43) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (77, 68, 51, 42, 25 )" << endl; cin >> Auswaehler; if (Auswaehler == 16) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (555, 1110, 1665, 2220 )" << endl; cin >> Auswaehler; if (Auswaehler == 2775) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (799, 733, 644, 578, 489 )" << endl; cin >> Auswaehler; if (Auswaehler == 423) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Gratuliere du hast" << Punkte <<"Punkte ereicht" << endl; cout << "Du bist also: "; if (Punkte < 2) { cout << "Ein Mathe-Noob!"; } else if(Punkte < 4) { cout << "Nicht grade gut in Mathe"; } else if(Punkte < 6) { cout << "Solide in Mathe"; } else if(Punkte < 8) { cout << "Gut in Mathe"; } else if(Punkte < 10) { cout << "Sehr gut in Mathe"; } else if(Punkte == 10) { cout << "Ein Mathekünstler"; } }//Game int Highscore (int Punkte,int Highscore) { if (Punkte > Highscore) { cout << "Super du hast den Highscore geknackt!!!"; Punkte = Highscore; } else { cout << "Schade leider kein neuer Highscore!!!"; } return Highscore; }//highscoreC:\Program Files\Microsoft Visual Studio\MyProjects\mein progi\code.cpp(41) : error C2064: Ausdruck ergibt keine Funktion
Fehler beim Ausführen von cl.exe.Würde mich über Hilfe freuen

-
Du solltest die Variable in Zeile 21 anders nennen, denn sonst weiß der Compiler nicht, ob du in Zeile 41 den Pointer auf die Funktion "Highscore" oder den Wert der Variablen "Highscore" übergeben möchtest.
-
Was ist denn mit "Pointer" gemeint?
-
Naja der Zeiger eben..
-
Ich hab das ganze mal schnell repariert sodass es sich wenigstens kompilieren lässt, obs jetzt auch das tut was du willst muss du noch selber überprüfen...
# include <iostream> using namespace std; // Prototype's int Game (); int Highscore (int Punkte,int Highscore); // Main int main () { //Variablen deklaieren char chMenue; int Punkte = 0; int iHighscore = 0; //Schleife Menü do { cout << "Math Quizmaster " << endl; cout << "----------------" << endl; cout << "(S)piel starten" << endl; cout << "(H)ighscore" << endl; cout << "(E)nde" << endl; cout << "Bitte Menüpunkt eingeben"; cin >> chMenue; switch (chMenue) { //Spiel wird gestartet case ('S'): case ('s'): { Punkte = Game (); iHighscore = Highscore (Punkte, iHighscore); }break; //Spiel //Highscore wird aufgerufen case ('H'): case ('h'): { cout << "Der Aktuelle Highscore liegt bei "; cout << Highscore << " Punkten" << endl; }break; //Highscore } } while( chMenue != 'E' && chMenue != 'e'); cout << "\nDanke fürs spielen!!!!"; return 0; }//Main //Funktionen defenieren int Game () { int Punkte = 0; int Auswaehler = 0; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (1,2,3,4..)" << endl; cin >> Auswaehler; if (Auswaehler == 5) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (2,5,3,6,4,7..)" << endl; cin >> Auswaehler; if (Auswaehler == 5) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (2, 4, 16..)" << endl; cin >> Auswaehler; if (Auswaehler == 256) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (60,54, 42,36, 4..)" << endl; cin >> Auswaehler; if (Auswaehler == 18) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (3,7,4,6,10,7,9,13,12..)" << endl; cin >> Auswaehler; if (Auswaehler == 12) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (6, 18, 54..)" << endl; cin >> Auswaehler; if (Auswaehler == 162) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (1,9, 18, 26, 35 )" << endl; cin >> Auswaehler; if (Auswaehler == 43) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (77, 68, 51, 42, 25 )" << endl; cin >> Auswaehler; if (Auswaehler == 16) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (555, 1110, 1665, 2220 )" << endl; cin >> Auswaehler; if (Auswaehler == 2775) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Mit Welcher Zahl wird follgende logische Reihe vortgesetzt? (799, 733, 644, 578, 489 )" << endl; cin >> Auswaehler; if (Auswaehler == 423) { cout << "Super die antwort ist richtig"; Punkte++; } else cout << "Leider nicht die richtige Antwort"; cout << "Gratuliere du hast" << Punkte <<"Punkte ereicht" << endl; cout << "Du bist also: "; if (Punkte < 2) { cout << "Ein Mathe-Noob!"; } else if(Punkte < 4) { cout << "Nicht grade gut in Mathe"; } else if(Punkte < 6) { cout << "Solide in Mathe"; } else if(Punkte < 8) { cout << "Gut in Mathe"; } else if(Punkte < 10) { cout << "Sehr gut in Mathe"; } else if(Punkte == 10) { cout << "Ein Mathekünstler"; } return Punkte; }//Game int Highscore (int Punkte,int Highscore) { if (Punkte > Highscore) { cout << "Super du hast den Highscore geknackt!!!"; Punkte = Highscore; } else { cout << "Schade leider kein neuer Highscore!!!"; } return Highscore; }//highscore
-
Und noch ein kleiner Tipp.. es sieht ganz so aus als ob du munter an deinem Code weiterschreibst während er sich schon längst nicht mehr kompilieren lässt.
Du solltest eigentlich nach allen paar Zeilen deinen Code schnell kompilieren lassen, dann ist es auch leichter Fehler zu korrigieren als wie wenn man später alles noch mal überarbeiten muss.
-
Okey,
Also wie ich das sehe muss ich einfach darauf achten, dass ich Funktionen nicht mit Variablen füttere, die so heißen, wie die Funktion oder?
-
Im Prinzip solltest du für verschiedene Dinge niemals die exakt selben Namen verwenden.
-
Ihhhhh, cut & paste......
Stiltipp:
Schon mal was von DRY (Don't Repeat Yourself) gehört?? Packe Fragen und Antworten in eine passende Datenstruktur und erledige das ganze Frage/Antwort-Spielchen mit einem geeigneten Schleifenkonstrukt. Du wirst überrascht sein, wie hübsch Code manchmal aussehen kann
Und wie einfach erweiterbar!!!!!Grüße aus der Kaiserstadt