2015-10-08 2 views
0

Мне было интересно, можно ли переместить начальную точку Происхождения в нижний левый угол моей сетки.Выберите начальную точку Происхождения?

Это код, я работаю с:

#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 5 6" мой выход следующим образом:

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

Происхождение теперь установлено в верхний левый угол, как вы можете видеть на выходе. Я искал этот сайт и интернет в целом, и я не могу понять это.

+1

использование станд :: вектор (или станд :: массив <>, где это возможно), а символ ** –

+2

печати строки в обратном порядке? – molbdnilo

+2

Вы хотите, чтобы дисплей выглядел иначе, или это прелюдия к некоторым дополнительным математическим вещам? BTW - привычка спаривать '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; 
    } 

} 
Смежные вопросы