2016-06-24 28 views
1

Ich bin auf einer Mission zur Schaffung eines einfachen Schlachtschiff-Spiel in C. Wie ich getan habe, wie gefragt - ich bekomme falsche Ausgabe. Was vermisse ich?Drucken falsche Ausgabe

Sie describtion der Mission finden Sie hier: http://pastebin.com/nTAvKgjA

Hier ist meine Funktion:

void print_field(void) 
{ 

    int row_index = 0, col_index = 0; 
    int num_rows = 10, num_cols = 10; 

    for (row_index = 0; row_index < num_rows; row_index++) 
    { 
     for (col_index = 0; col_index < num_cols; col_index++) 
     { 
      if(is_visible(row_index, col_index) != 0) 
      { 
       printf("%c", is_ship(row_index, col_index)); 
      } 
      else 
      { 
       putchar('?'); 
      } 
     } 

     putchar ('\n'); 
    } 

    putchar ('\n'); 
} 

Es funktioniert, wenn ich es manuell testen. Wenn das Testen jedoch online durchgeführt wird, erhalte ich Fehler. Bitte überprüfen Sie es von hier: http://pastebin.com/xrzRy0ge

Also was vermisse ich? Das ist so frustrierend ...

+1

Geben Sie hier einen Fehler ein. Wenn ein Service ausfällt, können wir nicht helfen. – Li357

+1

Ohne zu wissen, was die Funktionen, die Sie anrufen, alles tun kann, ist raten. Du wirst mehr Code posten müssen. –

+0

Fehler vor Ort hinzugefügt und mehr Code verknüpft. – jaked

Antwort

2

Interessant. Es sieht so aus, als hätten Sie und das Testprogramm ein anderes Koordinatensystem. Ihr Ergebnis und das Referenzergebnis sind identisch, wenn Sie beide Achsen spiegeln.

+0

Ja, in der "Beschreibung", die durch OP verknüpft ist, haben die Funktionen die Signatur 'is_visible (x, y)', während OP 'is_visible (row_index, col_index)' verwendet, also transponiert er wahrscheinlich die Matrix ... –

+0

Kannst du es besser erklären? – jaked

+0

Wenn Sie Ihre Ausgabe untersuchen und die Spalte ganz links betrachten, sehen Sie, dass sie mit der oberen Referenzlinie identisch ist. Also, wie Bob klarstellte, haben Sie die Ausgabe umgesetzt. –