Variablenfehler
-
# include <iostream> # include <string> using namespace std; int main() { //Bearbeitete Zahl ist in i int ende = 0; //Zählende - bis dahin läuft das Programm int quotient; cout<<"Bis zu welcher Zahl wollen sie die Werte wissen? "; cin>>ende; for(int i=0;i<ende;i=i+1) //Hier wird i bis Ende hochgezählt { for(int z=i;z<=1/2;z=z-1)//Teilungsschleife { i/z=quotient; //Division if(i%z==0) //Prüfung ob restlos ganzzahlig { cout<<"Quotient = "<<quotient<<; } } cout<<"i = "<<i<< " Bei "<<ende<<" ist Schluss. \n"; } cin.get(); // Damit sich die Konsole nicht schließt statt return 0 }Bei der Division bekomme ich die Meldung:
main.cpp:21: error: invalid lvalue in assignmentund bei
main.cpp:24: error: expected primary-expression before ';' tokenWas kann das sein. Ich habe i doch in der 1. For-Schleife deklariert?
Wer gibt den rettenden Tip? Danke
-
andersrum
quotient=i/z;kein << am ende
cout<<"Quotient = "<<quotient;und
z<=1/2
ist fragwürdig.
vermutlich
z>0
-
cout<<"Bis zu welcher Zahl wollen sie die Werte wissen? "; cin>>ende; for(int i=1;i<ende;i=i+1) //Hier wird i bis Ende hochgezählt { for(int z=i;z<=z/2;z=z-1)//Divisionsschleife { int quotient=i/z; //Division if(i%z==0) //Prüfung ob restlos ganzzahlig { cout<<"Quotient = "<<quotient<<" gleich 0 \n"; } else { cout<<"Quotient = "<<quotient<<" ungleich 0 \n"; } } cout<<"i = "<<i<< " Bei "<<ende<<" ist Schluss. \n"; } cin.get(); // Damit sich die Konsole nicht schließt statt return 0 }Danke ich hab's so verändert. Es läuft, aber er geht nicht in die zweite Schleife rein. Was kommt genau in den If-Prüfwert rein? Ich will, daß er nur die Zahl ausgibt, wenn die Teilung ganzzahlig aufgeht.
Danke
-
welchen Zweck hat die Bedingung "... ; z <= z / 2 ; ..." ?
-
Bekell schrieb:
Danke ich hab's so verändert. Es läuft, aber er geht nicht in die zweite Schleife rein. Was kommt genau in den If-Prüfwert rein? Ich will, daß er nur die Zahl ausgibt, wenn die Teilung ganzzahlig aufgeht.
1. Statt den code-Tags bitte die cpp-Tags verwenden.
2. Üblicherweise nimmt man statt Zuweisungen für die Addition/Subtraktion von 1 den "--" bzw. "++"-Operator (Decrement/Increment).Diesen gibt es in einer Prekrement- (++i) und einer Postkrementvariante (i++).
int a = ++i; // Erhöht i und liefert dieses Ergebnis zurück int b = i++; // Erhöht i, liefert aber den Wert vor der Erhöhung zurückLetzteres bedeutet bei Komplexen Datentypen eine zusätzliche Kopie, daher ist das Prekrement meist besser.
for(int i=1;i<ende;++i)Zudem gibt es eine verkürzte Schreibweise für "i = i + x", nämlich "i += x". Auch hier hat letztere Variante im Zweifel Vorteile.
3. Ist es logisch das er nicht in die zweite schleife geht.
for(int z=i; z<=z/2; --z)//DivisionsschleifeDu vergleichst ob z kleiner oder gleich der Hälfte von z ist. Ich bezweifel das du hier wirklich weißt was du tust.
cu André