Создание динамического двухмерного массива с координатами x y в виде графика - PullRequest
0 голосов
/ 21 января 2019

Мне нужна помощь в отображении 2D-массива, который начинается (x, y) = (0,0) в нижнем левом углу.

Это то, что у меня есть, у меня проблемы с созданием дналевый угол как (0,0).Что у меня есть

x1y1, x1y2, x1y3, x1y4, x1y5,

x2y1, x2y2, x2y3, x2y4, x2y5,

x3y1, x3y2, x3y3, x3x3y5,

x4y1, x4y2, x4y3, x4y4, x4y5,

x5y1, x5y2, x5y3, x5y4, x5y5,

В то время как я хочу иметь

x1y5, x2y5, x3y5, x4y5, x5y5,

x1y4, x2y4, x3y4, x4y4, x5y4,

x1y3, x2y3, x3y3, x4y3, x5y2, * 10 * * 1 * 3, * 10 * * 1 * 3, * 10 * * 1 * 3, * 10 * * 1 * 3, x2y2, x3y2, x4y2, x5y2,

x1y1, x2y1, x3y1, x4y1, x5y1,

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

string ** array2D = nullptr;

void init2DArray(int, int);
void populate2DArray (int, int);
void display2DArray (int, int);
void safelyDeallocateMemory (int, int);

int main() {
   int row, col;
   row = col = 0;
   cout << "Pls enter no. of cols : ";
   cin >> col;
   cout << endl;

   cout << "Pls enter no. of rows : ";
   cin >> row;
   cout << endl;

    init2DArray (col, row);
    populate2DArray (col, row);
    display2DArray (col, row);
    safelyDeallocateMemory (col, row);

    cout << endl;

  return 0;
 }

void init2DArray (int col, int row) {
        array2D = new string * [row];

        for (int i = 0; i < row; i++)
              array2D [i] = new string [col];
}

void populate2DArray (int col, int row) {
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {

                ostringstream oss;
                oss << "x" << i + 1 << "y" << j + 1;

                array2D [i][j] = oss.str();
             }
         }
  }

void display2DArray (int col, int row) {
        cout << endl;
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                cout << array2D [i][j] << ", ";
            }
            cout << endl;
        }
 }

1 Ответ

0 голосов
/ 21 января 2019
for (int i = 0; i < row; i++) {
   for (int j = 0; j < col; j++) {

     ostringstream oss;
     oss << "x" << j + 1 << "y" << (row - i);

     array2D [i][j] = oss.str();
   }
}

Есть некоторые незначительные вещи, которые вы должны сделать.При перемещении строки в oss необходимо добавить j + 1 к x, потому что внутренний цикл выполняется первым.Для y вам просто нужно изменить formula на (row - i);Поскольку i начинается с 0, вы можете иметь 5, 4, 3, 2, 1.Если row равно 5, то у вас есть 5-0 = 5, тогда на следующей итерации у вас будет 5-1 = 4 и тому подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...