Feher C2062, Hilfe!
-
Ich bin noch blutiger Anfänger und habe noch wenig Erfahrung, deshalb habe ich versucht einen primitiven Taschenrechner zu programmieren, dieser liefert jedoch Fehlermeldungen auf die ich nicht mehr weiter weiss.
#include <iostream> using namespace std; bool defOperator = 1; // 1 bei definiertem Operator, 0 bei nicht definiertem Operator float Ergebnis; int Ende; float main () { float Eingabe1, Eingabe2; //Eingabe1 = Erste Zahl, Eingabe2 = Zweite Zahl, Eingabe3 = Operator int Eingabe3,Eingabe2ganz,Eingabe1ganz; float plus (float Eingabe1,float Eingabe2,float Ergebnis); //Prototypen float minus (float Eingabe1,float Eingabe2,float Ergebnis); float mal (float Eingabe1,float Eingabe2,float Ergebnis); float geteilt (float Eingabe1,float Eingabe2,float Ergebnis); float rest (float Eingabe1,float Eingabe2,float Ergebnis); //void rechnen (); float ergebnis(int Eingabe3); cout << "Der Rechner ist bereit fuer deine Eingaben. \n"; cout << "Bitte gebe nun deine erste Zahl ein..." << endl; cin >> Eingabe1; cout << "Bitte gebe nun deine zweite Zahl ein..." << endl; cin >> Eingabe2; cout << "Bitte gebe nun den Operator an.\n"; cout << "Tippe 1 fuer + \n "; cout << "Tippe 2 fuer - \n "; cout << "Tippe 3 fuer geteilt durch \n "; cout << "Tippe 4 fuer * \n"; cout << "Tippe 5 fuer Modolu \n"; cin >> Eingabe3; //rechnen (); float ergebnis (int Eingabe3); return Ergebnis; } float plus (float Eingabe1,float Eingabe2,float Ergebnis) { Ergebnis = Eingabe1 + Eingabe2; return Ergebnis; } float minus (float Eingabe1,float Eingabe2,float Ergebnis) { Ergebnis = Eingabe1 - Eingabe2; return Ergebnis; } float geteilt (float Eingabe1,float Eingabe2,float Ergebnis) { Ergebnis = Eingabe1 / Eingabe2; if ( Eingabe2 == 0 ) { cout << "Teilen durh 0 ist nicht definiert." << endl; defOperator = 0; } //if (Eingabe1%Eingabe != 0) //{ cout << "Rest ist " << Eingabe1%Eingabe << endl;} return Ergebnis; } float mal (float Eingabe1,float Eingabe2,float Ergebnis) { Ergebnis = Eingabe1 * Eingabe2; return Ergebnis; } float rest (float Eingabe1,float Eingabe2,float Ergebnis,int Eingabe1ganz,int Eingabe2ganz) { Eingabe1ganz = static_cast<int> (Eingabe1); //Eingaben müssen ganzzahlig sein Eingabe2ganz = static_cast<int> (Eingabe2); //Eingaben müssen ganzahlig sein cout << "Fuer Modulorechnung sind nur ganzzahlige Werte erlaubt, Werte werden nun ganzzahlig gemacht, Informationsverlust moeglich! \n"; Ergebnis = static_cast<float> (Eingabe1ganz%Eingabe2ganz); return Ergebnis; } /*void rechnen () //NICHT BEACHTEN { if (Eingabe3 == 1) { plus(); } else if (Eingabe3 == 2) { minus(); } else if (Eingabe3 == 3) { geteilt (); } else if (Eingabe3 == 4) { mal (); } else if (Eingabe3 == 5) { rest (); } else { cout << "Operator nicht definiert" << endl; defOperator = 0; } }*/ //NICHT BEACHTEN ENDE void ergebnis (int Eingabe3,float Eingabe1,float Eingabe2,float Ergebnis) { if (Eingabe3 == 1) { Ergebnis = float plus (float Eingabe1,float Eingabe2,float Ergebnis) } else if (Eingabe3 == 2) { Ergebnis = float minus (float Eingabe1,float Eingabe2,float Ergebnis) } else if (Eingabe3 == 3) { Ergebnis = float geteilt (float Eingabe1,float Eingabe2,float Ergebnis) } else if (Eingabe3 == 4) { Ergebnis = float mal (float Eingabe1,float Eingabe2,float Ergebnis) } else if (Eingabe3 == 5) { Ergebnis = float rest (float Eingabe1,float Eingabe2,float Ergebnis,int Eingabe1ganz,int Eingabe2´ganz) } if ( defOperator == 1 ) {cout << "Das Ergebnis ist: " << Ergebnis << "\a" << endl;} else Ergebnis = 0; cin >> Ende; }Diese Meldungen kommen beim kompilieren:
1.cpp(11) : warning C4101: 'Eingabe2ganz': Unreferenzierte lokale Variable
1.cpp(11) : warning C4101: 'Eingabe1ganz': Unreferenzierte lokale Variable
1.cpp(110) : error C2062: 'float'-Typ unerwartet
1.cpp(114) : error C2062: 'float'-Typ unerwartet
1.cpp(118) : error C2062: 'float'-Typ unerwartet
1.cpp(122) : error C2062: 'float'-Typ unerwartet
1.cpp(126) : error C2062: 'float'-Typ unerwartetAbgesehen von den ersten beiden Warnungen habe ich keine Ahnung was die Meldungen bedeuten , und auf den Seiten hier ist die Lösung immer irgendein Semikolon Fehler, davon habe ich hier aber keinen gfunden.
-
Du solltest dich nochmal mit dem Kapitel Funktionen auseinandersetzen.
Wie und wo deklariert man die Protoypen?
Wie werden Funktionen aufgerufen?Und es heißt int main() {}
-
wie gesagt du kanst main nicht als float deklarieren!
Das ist immer ein integer, du kannst die main funktion eh nicht aufrufen, da kommt auch nur eine fehlermeldung!Kleiner tipp

ich würde die Variablen nicht global deklarieren!gruß
coco
-
[quote="CocoEi"Kleiner tipp

ich würde die Variablen nicht global deklarieren![/quote]
Funktionsdeklarationen (Prototypen) aber schon.
Die haben in einer Funktion nichts zu suchen.
-
float Ergebnis; // noch ganz viel cod dazwischen void ergebnis (int Eingabe3,float Eingabe1,float Eingabe2,float Ergebnis)ich weiß nicht was du daran als Prototyp ansiehst

außerdem
int Ende;find ich auch nirgends unter den functionen!?
oder vergucke ich mich

gruß
coco
-
Das war keine Kritik an deinem Tipp, sondern eine Ergänzung.
Variablen lokal, Funktionen global.
Oder was hältst du von den Zeilen 12 bis 18?
-
ja genau so meinte ich das

gruß
cocops: habe ich auch nicht als kritik empfunden dachte nur du hast mich falsch verstanden
