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 unerwartet

    Abgesehen 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ß
    coco

    ps: habe ich auch nicht als kritik empfunden dachte nur du hast mich falsch verstanden 🙂


Anmelden zum Antworten