2016-04-22 10 views
0

Kann mir jemand helfen, den Code zu schreiben, um zu prüfen, ob der Benutzer zweimal die gleiche Koordinate eingegeben hat?Überprüfung auf wiederholte Eingabe von Koordinaten durch den Benutzer MATLAB

Teil des Codes:

rc = input('Enter your next move [row space column]: '); 
       row = rc(1); %users coordinates 
       col = rc(2); 
          if row<0 || col<0 
          disp('Please enter positive coordinates'); 
          rc = input('Enter your next move [row space column]: '); 
          row = rc(1); 
          col = rc(2); 
          end 
          if row>size || col>size 
          disp('Please enter cordinates with in the game board'); 
          rc = input('Enter your next move [row space column]: '); 
          row = rc(1); 
          col = rc(2); 
          end 

Ich habe allready geprüft für eine positive und eine zu große Werte, aber jetzt will ich sicherstellen überprüfen, der Benutzer nicht das gleiche zweimal eintritt koordinieren, und wenn sie zeige eine Fehlermeldung. Danke Hilfe Danke

+0

empfehle ich die 'if' Aussagen ersetzt mit' while' Schleifen, sonst ermöglichen Sie es dem Endbenutzer Crash dein Programm. Möchten Sie eine Fehlermeldung ['error'] (http://mathworks.com/help/matlab/ref/error.html?requestedDomain=www.mathworks.com) anzeigen, um das Programm zu unterbrechen oder Benutzer [' input '] (http://mathworks.com/help/matlab/ref/input.html) wie du es schon machst? Sie sind verschiedene Dinge. – codeaviator

+0

oh ich sehe, ich möchte Benutzereingaben erneut anfordern, nachdem der Benutzer eine Wiederholungskoordinate eingegeben hat. und für die While-Schleifen, würde ich tun: während Zeile <0 || Col <0 und so weiter? – katDouglas

+0

Genau. Möchten Sie Benutzereingaben anfordern, wenn der Benutzer 'Zeile || wiederholt col' oder 'row && col'? Übrigens, kennen Sie den Operator "=="? – codeaviator

Antwort

0

Wie bereits im Kommentarabschnitt erwähnt, um sicherzustellen, dass der Benutzer nicht zweimal die gleichen Koordinaten eingeben, sollten Sie jedes Paar gültige Koordinaten in Arrays speichern, so dass das nächste Mal Der Benutzer gibt ein neues Koordinatenpaar ein. Sie können überprüfen, ob sie bereits vorhanden sind.

Ich erstellte zwei Arrays: rowv für die row Koordinaten und colv für die col Koordinaten.

Dann implementiert ich folgende while Zustand mit dem logical operatorsany und &, kombiniert mit der ==relational operator:

% Check that the point is not repeated. 
while any((rowv == row) & (colv == col)) 

Also, solange der Benutzer coorinates wiederholt tritt er/sie es noch einmal versuchen werden gebeten, bis Ein gültiges Paar wird eingegeben.

Der folgende Code ist ein voll funktionierendes Beispiel, so können Sie es testen sofort:

% Game board size. 
size = 4; 

% Ask for number of points. 
n = input('Number of points: '); 

% Preallocate arrays with -1. 
rowv = -ones(1,n); 
colv = -ones(1,n); 

% Iterate as many times as points. 
for p = 1:n 
    % Ask for point coordinates. 
    rc = input('Enter your next move [row space column]: '); 
    row = rc(1); 
    col = rc(2); 

    % Check that coordinates are positive. 
    while row<0 || col<0 
     disp('Please enter positive coordinates'); 
     rc = input('Enter your next move [row space column]: '); 
     row = rc(1); 
     col = rc(2); 
    end 

    % Check that coordinates are within the game board. 
    while row>size || col>size 
     disp('Please enter cordinates within the game board'); 
     rc = input('Enter your next move [row space column]: '); 
     row = rc(1); 
     col = rc(2); 
    end 

    % Check that the point is not repeated. 
    while any((rowv == row) & (colv == col)) 
     disp('Coordinates already exist. Please enter a new pair of cordinates'); 
     rc = input('Enter your next move [row space column]: '); 
     row = rc(1); 
     col = rc(2); 
    end 

    % The point is valid. 
    % Store coordinates in arrays. 
    rowv(p) = rc(1); 
    colv(p) = rc(2); 
end 
Verwandte Themen