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
-
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.