warum wird die Schleife nicht richtig ausgeführt?



  • Also meine Aufgabestellung ist folgende, dass ich ausgeben soll ob zahle mehrmals kommen oder nicht.
    warum wird meine for schleife nur einmal ausgeführt?
    wo ist mein Code nicht korrekt?

    #include<iostream>
    using namespace std;
    
    int main(){
    
    	int zahl;
    	int letzteZiffer;
    
    	cin >> zahl;
    
    	for(; zahl; zahl = zahl/10){
    		letzteZiffer = zahl%10;
    
    		while(zahl){
    			zahl = zahl/10;
    			if(zahl%10 != letzteZiffer){
    
    			}else{
    				cout << "Nicht alle zahle sind verschieden" << endl;
    				return 1;
    			}
    		}
    	}
    
    			cout << "Alle Zahle sind verschieden"<<endl	;
    	return 0 ;
    }
    


  • Wegen der while schleife in deiner for schleife. Darin veränderst du zahl



  • statt while schleife habe ich for schleife auch gehabt aber hat sich nichts geändert. Wie kann ich auswirken, dass nach der verarbeitung von 2.Schleife wieder in die Erste schleife zuzückkomme?



  • Du darfst zahl in der inneren schleife nicht verändern.

    // ...
    for(; zahl; zahl = zahl/10){ // beim möglichen zweiten lauf ist zahl 0 und die schleife wird abgebrochen
            letzteZiffer = zahl%10;
    
            while(zahl){ // solange zahl
                zahl = zahl/10; // hier veränderst du zahl
                if(zahl%10 != letzteZiffer){
                //...
                }
            // ...
            } // du verlässt die while schleife und zahl ist 0
    }
    


  • Danke Tobias für deine Ausführliche Antwort

    ich habe so gemacht und funktioniert jetzt

    #include<iostream>
    using namespace std;
    
    int main(){
    
    	int zahl;
    	int letzteZiffer;
    
    	cin >> zahl;
    
    	for(; zahl; zahl = zahl/10){
    		letzteZiffer = zahl%10;
    
    		for(int zahl2 = zahl;zahl2;zahl2=zahl2/10 ){
    
    			if((zahl/10%10) != letzteZiffer){
    
    			}else{
    				cout << "Nicht alle zahle sind verschieden" << endl;
    				return 1;
    			}
    		}
    	}
    
    			cout << "Alle Zahle sind verschieden"<<endl	;
    	return 0 ;
    }
    

  • Mod

    Unterscheide bitte sauber zwischen Zahlen und Ziffern. Ich bin bestimmt nicht der einzige, dem das Herz blutet, wenn er deine Beiträge liest. Du würdest schließlich auch Buchstaben und Wörter nicht als das gleiche ansehen.

    Korrekte Sprache hilft auch ungemein beim Programmieren, denn nur wenn man seine Gedanken sauber fassen kann, kann man sie auch so in Programmcode verpacken, dass eine streng nach Vorschrift arbeitende Maschine diese Gedanken auch korrekt umsetzt.



  • Danke. Klingt logisch, hast recht. Es tuhe mir sehr sehr schwer beim Programmieren und bin euren Tipp sehr Dankbar. Hätte garnichts vorangebracht. Ich höffe und wünsche, dass es in meinem Kopf auch irgendwann Klick macht
    Auf jedenfall Danke euch


Log in to reply