String vergleichen, for schleifen und if-abfragen - Wo ist mein Fehler?



  • Hallo... ich find den fehler einfach nicht... ich vergleiche stückweise zwei strings:

    for (int x = 0; x < code.length(); x++){
    			if ((code[x] == eingabe[x]) {
    				if(code[x] == '0'){
    					if(t0 > 0){
    						t0--;
    						cout << "X";
    					}
    				}else if(code[x] == '1'){
    					if(t1 > 0){
    						t1--;
    						cout << "X";
    					}
    				}else if(code[x] == '2'){
    					if(t2 > 0){
    						t2--;
    						cout << "X";
    					}
    				}else if(code[x] == '3'){
    					if(t3 > 0){
    						t3--;
    						cout << "X";
    					}
    				}else if(code[x] == '4'){
    					if(t4 > 0){
    						t4--;
    						cout << "X";
    					}
    				}else if(code[x] == '5'){
    					if(t5 > 0){
    						t5--;
    						cout << "X";
    					}
    				}else if(code[x] == '6'){
    					if(t6 > 0){
    						t6--;
    						cout << "X";
    					}
    				}else if(code[x] == '7'){
    					if(t7 > 0){
    						t7--;
    						cout << "X";
    					}
    				}else if(code[x] == '8'){
    					if(t8 > 0){
    						t8--;
    						cout << "X";
    					}
    				}else if(code[x] == '9'){
    					if(t9 > 0){
    						t9--;
    						cout << "X";
    					}
    				}
    			}
    		}
    


  • ach ich blindes Huhn hab eine ( zuviel drin ... oh mann, und ich sitz hier seit 20 minuten und probiere hin und her -.-
    Mit Java und Eclipse is es irgendwie wesentlich übersichtlicher ^^

    😃



  • Ich würde mir vielleicht einen anderen Stil angewöhnen. Etwas mehr Leerzeichen und zusammengehörige geschweifte Klammern auf gleicher Höhe wäre sicher ein Anfang. Mit konsistenter Einrückung könntest du fortfahren und es sähe schon viel besser aus.

    Aber hat dich dein Compiler nicht auf die fehlerhafte Zeile hingewiesen? Poste nächstes Mal auch die Fehlermeldung...



  • die sind doch auf gleicher höhe ... 😕
    Außerdem bin ich generell noch neuling.. ich hab keine Ahnung obs da Regeln gibt und wenn ja wie die aussehen also sorry



  • Bei der Codeformatierung gibt es unter 10 Leuten mindestens 20 verschiedene Meinungen. Wichtiger wäre, sich nicht so oft zu wiederholen - du hast da zehn Abfragen, die ziemlich genau das gleiche machen - warum nicht

    int t[10];
    
    // ...
    
    for(int x = 0; x < codes.size(); ++x) {
      char c = codes[x];
    
      if(c >= '0' && c <= '9' && t[c - '0'] > 0) {
        --t[c - '0'];
        std::cout << 'X';
      }
    }
    

    oder etwas in der Art?



  • Diese vielen Wiederholungen bekommst Du bestimmt weg. Vielleicht so:

    for (int i=0, e=code.length(); i<e; ++i) {
      if (code[i]==eingabe[i] && isdigit(code[i])) {
        int d = whatdigit(code[i]);
        if (t[d]>0) {
          --t[d];
          cout << "X";
        }
      }
    }
    

Log in to reply