2017-02-11 4 views
0

Ich schätze es, dass Sie sich die Zeit nehmen, mein Problem zu lesen, tut mir leid, ich bin nur ein Anfänger in der Programmierung. Anscheinend bin ich nicht so gut in Schleifen und wenn sonst Aussage und ich weiß nicht was falsch in meinem Code ist. Wenn ich es starte und "up" eingabe, gehe ich einfach zu (8,10). es sollte (0,1) gewesen sein, dann wird die Konsole fragen, in welche Richtung sie wieder gehen wollen. Danke im Voraus!!! : DC++ Mein Programm ist in der Endlosschleife

#include<iostream>; 
#include<string>; 

using namespace std; 

int main() 
{ 
    int x = 0; 
    int y = 0; 
    string input; 

    cout << "objective: go to (8,9)" << endl; 
    cout << "current location (" << x << "," << y << ")" << endl; 

    while ((x = 8) && (y = 9)) 
{ 
    cout << "which way do you want to go?: "; 
    cin >> input; 

    if (input == "up") 
    { 
     ++y; 
     cout << "current location (" << x << "," << y << ")" << endl; 
     break; 

    } 
    else if (input == "down") 
    { 
     --y; 
     cout << "current location (" << x << "," << y << ")" << endl; 
     break; 
    } 
    else if (input == "right") 
    { 
     ++x; 
     cout << "current location (" << x << "," << y << ")" << endl; 
     break; 
    } 
    else if (input == "left") 
    { 
     --x; 
     cout << "current location (" << x << "," << y << ")" << endl; 
     break; 
    } 

} 

cout << "current location (" << x << "," << y << ")" << endl; 
cout << "Congratulations! You have reach your destination! :D" << endl; 


system("pause"); 
return(0); 

}

+1

Sie sind nicht dazu bestimmt, Break-Anweisungen zu verwenden, es sei denn, Sie möchten aus der umgebenden Schleife ausbrechen. – synchronizer

+0

danke Ich habe versucht, die ganze Pause zu entfernen, aber es ging direkt zu "Glückwunsch! Sie haben Ihr Ziel erreicht", als ich versuchte, es zu laufen, und ich ändere die Bedingung zu (x == 8) && (y == 9) immer noch nicht Verbesserung. – user7524392

+0

Ich schlage vor, Ihren aktualisierten Code hinzuzufügen. – synchronizer

Antwort

0

"
ich die ganze Pause versuchte zu entfernen, aber es ging direkt nach unten zu" Glückwunsch! Sie haben Ihr Ziel erreicht „wenn ich versuchte, es zu laufen und ich die Bedingung (x == 8) & & (y == 9) ändern immer noch keine Besserung. “

Ihre Schleifenbedingung falsch ist. Die while-Schleife läuft nur , wenn x 8 ist und y 9. Sie sind 0 und 0 am Anfang des Programms, was erklärt, warum wir die Schleife überspringen. Die wirkliche Bedingung ist: "Führen Sie die Schleife so lange wie x und y sind nicht diese Werte." while (x != 8 || y != 9) und abwechselnd abwechselnd: while (!(x == 8 && y == 9))

+0

Oh mein Gott! Ich bekomme es jetzt wie Schleife funktioniert, also versuchte ich (x! = 8 || y! = 9) und es funktioniert! : D aber ich verstehe es nicht, warum negative Zahl nicht in der Konsole auftauchen überspringt alle if-Anweisungen – user7524392

+0

abwechselnd:! (X == 8 && y == 9) – synchronizer

+0

Vielen Dank! es hat mir wirklich sehr geholfen. :) – user7524392