2015-10-08 24 views
0

我想知道是否可以將Origin的起點移動到我的網格的左下角。選擇起源的起點?

這是我的工作代碼:

#include <iostream> 

using namespace std; 

char **createBoard(int n, int m); // Býr til tvívítt kvikt fylki og skilar því til baka 
void initiaizeBoard(char **p, int n, int m); // Upphafsstillum allt með '.' 
void printBoard(int n, int m, char **p); // Prentum út leikborðið 


int main() 
{ 
    int rows, columns; 
    int xhnit; 
    int yhnit; 

    cin >> rows >> columns >> xhnit >> yhnit; 


    char **board = createBoard(rows, columns); 

    initiaizeBoard(board, rows, columns); 

    board[xhnit][yhnit] = player; 
    printBoard(rows, columns, board); 

    return 0; 
} 

char **createBoard(int n, int m) 
{ 
    char **p = new char*[n]; 
    for (int i = 0; i < n; i++) 
    { 
     p[i] = new char[m]; 
    } 
    return p; 
} 

void initiaizeBoard(char **p, int n, int m) 
{ 
    for (int i = 0; i < n; i++) 
    { 
     for (int j = 0; j < m; j++) 
     { 
      p[i][j] = '.'; 
     } 
    } 
} 



void printBoard(int n, int m, char** p) 
{ 
    for (int i = 0; i < n; i++) 
    { 
     for (int j = 0; j < m; j++) 
     { 
      cout << p[i][j]; 
     } 
     cout << endl; 
    } 

} 

爲「10 10 10 6」我的輸出如下輸入:

.......... 
.......... 
.......... 
.......... 
.......... 
......X... 
.......... 
.......... 
.......... 
.......... 

起源現在在設置您可以從輸出中看到左上角。我一直在尋找這個網站和一般的互聯網,我似乎無法弄清楚這一點。

+1

使用std ::矢量(或std ::陣列<>在可能的情況),而不是字符** –

+2

打印以相反的順序的行? – molbdnilo

+2

你只是想讓顯示不同出來,還是這是一些額外的數學事物的前奏?順便說一句 - 養成將'new'與'delete'配對的習慣。 – doctorlove

回答

1

你可以把一切都相同,只是以倒序打印行:

void printBoard(int n, int m, char** p) { 
    for (int i = n-1; i > -1; i--) { // Print in reverse order! 
     for (int j = 0; j < m; j++) { 
      cout << p[i][j]; 
     } 
     cout << endl; 
    } 
} 

這是一個活生生的例子:http://ideone.com/GJVw8M

3

從某種意義上說,在打印數組之前,左上角和左下角只是任意的區別。數組元素在分配給它們之前並沒有真正的物理位置。所以,爲了移動原點,您可以從第一個到最後一個打印行。

void printBoard(int n, int m, char** p) 
{ 
    for (int i = n-1; i >= 0; i--) 
    { 
     for (int j = 0; j < m; j++) 
     { 
      cout << p[i][j]; 
     } 
     cout << endl; 
    } 

} 
0

我可能誤解了問題,但它只是需要更改的輸出顯示?

void printBoard(int n, int m, char** p) 
{ 
    for (int i = (n-1); i >=0; i--) 
    { 
     for (int j = 0; j < m; j++) 
     { 
      cout << p[i][j]; 
     } 
     cout << endl; 
    } 

}