Fehler: L-Wert erfordert [gelöst]



  • Hallo zusammen,

    ich will dem double zinsen einen Wert aus einer Funktion zuweisen, und g++ gibt folgenden Fehler zurück:

    Fehler: Als linker Operand einer Zuweisung wird L-Wert erfordert
    

    Die Zuweisung sieht wie folgt aus:

    zinsen = zinsBerechnung(zinssatz, schulden);
    

    Und die Funktion so:

    double zinsBerechnung(double zinsF, double schuldenF){
    	//Umrechnung aus Prozent heraus
    	zinsF=zinsF*0.01;
    	//Zinsen pro Monat
    	zinsF=schuldenF*zinsF/12;
    	//kaufmännische Rundung
    	zinsF=100.0*zinsF+0.5;
    	long temp=(long)zinsF;
    	zinsF=(double)temp / 100.0;
    	return zinsF;
    }
    

    Es wäre toll, wenn ihr mir sagen könntet, wo genau der Fehler liegt.

    LG 🙂



  • Wie ist zinsen definiert?
    Wäre einfacher, Du hättest das gesamte Programm gezeigt.



  • RockLloque schrieb:

    Es wäre toll, wenn ihr mir sagen könntet, wo genau der Fehler liegt.

    Gerne: Du hast bei einer versuchten Zuweisung auf der linken Seite keinen L-Wert stehen. Mehr kann man ohne weitere Informationen deinerseits nicht sagen.



  • sorry, dachte das reicht.

    hier ist das ganze Programm:

    #include<iostream>
    #include<fstream>
    #include<string>
    using namespace std;
    
    double zinsBerechnung(double, double);
    int main(){
    	double schulden=0.0, zinssatz=0.0, rate=0.0, tilgung=0.0, zinsen=0.0;
    	int jahr=2013;
    	cout<<"Bitte geben Sie ihre Anfangsschulden, ihren Zinssatz und ihre monatliche Rate an:\n Anfangsschulden: ";
    	cin>>schulden;
    	cout<<"\n Zinssatz in Prozent: ";
    	cin>>zinssatz;
    	cout<<"\n Monatsrate: ";
    	cin>> rate;
    	ofstream tilgungsplan("tilgungsplan.txt");
    //	tilgungsplan.open("tilgungsplan.txt");
    	tilgungsplan<<"Anfangsschulden : "<<schulden<<" Zinssatz nominal : "<<zinssatz<<"%\n"<<endl;
    	/*if(!tilgungsplan){
    		cerr<<"Error, die Zieldatei tilgungsplan.txt konne nicht geöffnet werden!!\n";
    		exit(-1);
    	}*/
    	tilgungsplan.width(10);
    	tilgungsplan<<"Zahlmonat"<<"Rate"<<"Zinsen"<<"Tilgung"<<"Reset";
    	for(int i=0;schulden>rate;++i){
    		if(i%12=0) jahr++;
    		zinsen = zinsBerechnung(zinssatz, schulden);
    		tilgung=rate-zinsen;
    		schulden=schulden - tilgung;
    		tilgungsplan.setf(ios::showpoint|ios::fixed, ios::floatfield);
    		tilgungsplan.precision(2);
    		tilgungsplan.width(10);
    		tilgungsplan<<i%12<<"."<<jahr;
    		tilgungsplan.width(10);
    		tilgungsplan<<rate<<zinsen<<tilgung<<schulden;
    	}
    	tilgungsplan.close();
    }
    double zinsBerechnung(double zinsF, double schuldenF){
    	//Umrechnung aus Prozent heraus
    	zinsF=zinsF*0.01;
    	//Zinsen pro Monat
    	zinsF=schuldenF*zinsF/12;
    	//kaufmännische Rundung
    	zinsF=100.0*zinsF+0.5;
    	long temp=(long)zinsF;
    	zinsF=(double)temp / 100.0;
    	return zinsF;
    }
    

    Hoffe das hilft 🙂


  • Mod

    RockLloque schrieb:

    Fehler: Als linker Operand einer Zuweisung wird L-Wert erfordert
    

    Die Zuweisung sieht wie folgt aus:

    zinsen = zinsBerechnung(zinssatz, schulden);
    

    Die Fehlermeldung bezieht sich auf die Zeile davor

    if(i%12=0) jahr++;
    


  • Tipp:

    = ist der Zuweisungsoperator. Da muss offensichtlich auf der linken Seite etwas stehen, was sich auf ein "Objekt" bezieht, also Speicher, wo man einen Wert speichern kann. Diese Art von Ausdruck nennt man auch L-Value (bzw GL-Value in C++11-Sprech, für Generalized L-Value). i%12 ist nur ein Divisionsrest, ein (pure) R-Value, nichts, was du einem neuen Wert zuweisen kannst.

    == ist der Vergleichsoperator



  • vielen Dank
    Den Fehle hatte ich eigentlich schon einmal behoben, darum werde ich ihn dieses mal übersehen haben.


Anmelden zum Antworten