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 assignment

    und bei
    main.cpp:24: error: expected primary-expression before ';' token

    Was 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ück
    

    Letzteres 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)//Divisionsschleife
    

    Du 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é


Anmelden zum Antworten