Другие языки программирования и технологии

Помогите решить программу на С++

Дан двумерный массив целых чисел. Модифицировать его элементы по следующему правилу: ко всем четным элементам массива прибавить последний элемент соответствующей строки, к остальным - первый элемент соответствующего столбца.
Если под четными элементами массива понимаются кратные двум, то можно решить так (замечание: строки массива обрабатываются от последней к первой, чтобы первая изменялась последней, иначе к элементам столбцов будут прибавляться уже измененные значения первой строки) :

#include <iostream>
#include <iomanip>

using namespace std;

bool even(int number) {
return number % 2 == 0;
}

void modify_int_array(int *array_data, const int n, const int m) {
int (*array)[m] = (int (*)[m]) array_data;
int row, column;

for (row = n - 1; row >= 0; --row) {
for (column = 0; column < m; ++column) {
array[row][column] += even(array[row][column]) ? array[row][m - 1] : array[0][column];
}
}
}

void input_int_array(int *array_data, const int n, const int m) {
int (*array)[m] = (int (*)[m]) array_data;
int row, column;

for (row = 0; row < n; ++row) {
for (column = 0; column < m; ++column) {
cout << "array[" << row << "][" << column << "] = " << flush;
cin >> array[row][column];
}
}
}

void print_int_array(int *array_data, const int n, const int m) {
int (*array)[m] = (int (*)[m]) array_data;
int row, column;

cout << "[" << n << "][" << m << "] :" << endl;
for (row = 0; row < n; ++row) {
for (column = 0; column < m; ++column) {
cout << setw(5) << array[row][column] << " ";
}
cout << endl;
}
}

int main() {
int n, m;

cout << "array rows: " << flush;
cin >> n;
cout << "array columns: " << flush;
cin >> m;

int *array = new int [n * m];

input_int_array(array, n, m);

cout << "array";
print_int_array(array, n, m);

modify_int_array(array, n, m);

cout << "modified array";
print_int_array(array, n, m);

delete[] array;

return 0;
}
Даниил Андрющенко
Даниил Андрющенко
2 433
Лучший ответ
Andrey Saburov
Andrey Saburov
2 594