2017-12-24 5 views
0

Ich lerne gerade C++ an meiner Schule und mache ein Wort Spürhund als Teil eines Projekts, das ich einreichen muss. Dafür habe ich bereits das Raster der Alphabete und anderer notwendiger Dinge (Hinweise, Regeln usw.) erstellt. Ich nehme die Eingabe in Form von Koordinaten in einem Integer-Array, wobei der Benutzer 4 Werte in das Array eingibt, die die anfängliche Zeilen- und Spaltennummer und die letzte Zeilen- und Spaltennummer angeben, die dem ersten und letzten Alphabet von a entsprechen bestimmtes Wort.Warum gibt dieses Codefragment unerwartete Ergebnisse zurück?

Nachdem ich das getan habe, vergleiche ich jetzt die Array-Eingabe durch den Benutzer mit dem Array, das ich bereits definiert habe, das die Koordinaten dieses bestimmten Wortes hat. Dies ist hier dargestellt:

cout<<"Enter the coordinates of starting and final characters : row1 col1 row2 col2 "<<endl; 
    for (z = 0; z < 4; z++)  //first for loop 
     cin>>p[z];    //taking the input as an array 'p' 

    for (b = 0; b < 4; b++)  //second for loop 
    { 
     if (p[b] == messi[b]) 
      b+=0; 
    } 
    if (b == 4) 
     cout<<"Great!!!! You have answered the question correctly"<<"\n\n"; 
    else 
     cout<<"You got this one wrong mate! Try again :)"<<"\n\n"; 

Hier messi [b] ist die Anordnung, die die Koordinaten entsprechend dem Wort ‚MESSI‘ in dem Netz aufweist. Nun, meiner Meinung nach muss die 'if'-Anweisung nach der zweiten for-Schleife die Bedingung enthalten, um zu überprüfen, ob b = 3 ist. Wenn ich das tue, kommt die Ausgabe immer zu dem heraus, was die' else'-Anweisung sagt: Du hast das ... "für jeden Input. Wenn ich jedoch die Bedingung auferlege, zu überprüfen, ob b = 4 ist, ergibt sich die Ausgabe als das, was die "if" -Anweisung sagt, d. H. "Großartig !! ..." für jede Eingabe.

Was mache ich falsch? Ich hoffe, ich bin klar genug, um Ihnen das Problem zu erklären. Ich verwende CodeBlocks 16.01.

+2

Was erwarten Sie von 'b + = 0;'? Und was erwarten Sie von der Umschlingung? – Jarod42

+0

können Sie Ihre Ausgabe einfügen –

+0

Nun, mein Ausgabebildschirm erlaubt mir nicht, Inhalte von dort zu kopieren. – Saksham

Antwort

1

Es ist ein wenig unklar, was Sie tun, wie das Programm steht, b wird immer gleich 4 nach dem zweiten for -loop seit der letzten Zeit zu Bedingung war wahr, b < 4. So nach dem Zuwachs, es wird sein 4.

Im Inneren des zweiten for -loop Sie auch den NOP-Code b += 0; haben, die an den Code absolut nichts tut. Was ist die Absicht hier?

+0

Oh, ich habe gerade herausgefunden, was der Fehler war. Ich habe es jetzt behoben. Wahrscheinlich war ich nicht klar genug, um das Problem zu erklären. Danke trotzdem. – Saksham

Verwandte Themen