Добавление столбцов в двумерный массив - PullRequest
0 голосов
/ 20 ноября 2018

Любой желаемый array введенный пользователем, код ищет каждый столбец, если какой-либо элемент в любом столбце равен номеру y. Затем код должен добавить new column of zeros перед ним.

Код

#include <pch.h>
#include <iostream>

using namespace std;

int main()
{
int y, rows, columns;
std::cout << "Enter the number of rows: ";
std::cin >> rows;
std::cout << "Enter the number of columns: ";
std::cin >> columns;
std::cout << "Enter a number Y: ";
std::cin >> y;

//-----------------------Generating 2-D array---------------------------------------------------------
int **array = new int*[2 * rows];
for (int i = 0; i < rows; i++)
    array[i] = new int[columns];
//------------------------Generating bool--------------------------------------------------------------
bool *arrx = new bool[columns];
//-----------------------Input Array Elements---------------------------------------------------------
std::cout << "Enter the elements" << std::endl;
for (int i = 0; i < columns; i++)
    for (int j = 0; j < rows; j++)
        std::cin >> array[i][j];
//--------------------Loop for the array output--------------------------------------------------------
for (int i = 0; i < columns; i++) {
    for (int j = 0; j < rows; j++) {
        std::cout << array[i][j] << " ";
    }
    std::cout << "\n";
}
//-------------------Loop for finding columns with even numbers----------------------------------------
for (int i = 0; i < columns; i++) {
    arrx[i] = false;
    for (int j = 0; j < rows; j++) {
        if (array[j][i] == y) {
            arrx[i] = true;
        }
    }
}
std::cout << "\n";
//--------------------Loop for addition of new columns infront of even numbers--------------------------
for (int i = 0; i < columns; i++) {
    for (int j = 0; j < rows; j++) {
        std::cout << array[i][j] << " ";
    }
    std::cout << "\n";
    if (arrx[i]) {
        for (int i = 0; i < rows; i++) {
            std::cout << 0 << " ";
        }
        std::cout << "\n";
    }
}

return 0;
}

Здесь этот код добавляет только строки к array, в то время как мне нужно добавить columns.Я попытался изменить array[i][j] на array[j][i], но тщетно.

1 Ответ

0 голосов
/ 20 ноября 2018

Вам необходимо заменить

for (int i = 0; i < columns; i++) {
    for (int j = 0; j < rows; j++) {
        std::cout << array[i][j] << " ";
    }
    std::cout << "\n";
    if (arrx[i]) {
        for (int i = 0; i < rows; i++) {
            std::cout << 0 << " ";
        }
        std::cout << "\n";
    }
}

на

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < columns; j++) {
        std::cout << array[i][j] << " ";
        if (arrx[j]) {
           std::cout << 0 << " ";
         }
    }
}

. Это печатает ноль после каждого элемента, значение столбца которого помечено.То, что вы пытались сделать, это печатать на стандартный вывод столбец за столбцом, что не совсем так.

Также я настоятельно рекомендую вам рассмотреть возможность использования std :: vector вместо простых указателей, чтобы избежать ошибок, таких как здесь, где вызабыл освободить память.

...