Многомерные массивы C++
Задание : В матрице Z(5,6) первый отрицательный элемент каждого столбца заменить суммой оставшихся. Отрицательные элементы до замены вывести в массив B. Вывести исходную и преобразованную матрицы, полученный массив.
int Z[N][M] = { {-1,-2,-3,-4,-5,-6},
{ 2, 4, 3, 3, 1, 5},
{ 2, 4, 3, 3, 1, 5},
{ 2, 4, 3, 3, 1, 5},
{ 2, 4, 3, 3, 1, 5} }, B[M], i, j;
cout << "Массив B:" << endl;
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
if (Z[j][0] < 0)
{
B[j] = Z[j][0];
cout << B[j] << " ";
Z[j][0] = 0;
}
}
}
Подскажите как записать отрицательные элементы в одномерный массив.
Ответы (1 шт):
Автор решения: qeqolla
→ Ссылка
я бы сделал это так
сначала ищу количество отрицательных элементов и создаю массив В такой длинны
int count_neg = 0;
for (auto & j : Z) {
if (j[0] < 0)
++count_neg;
}
int *B = new int[count_neg];
потом просто добавляю отрицательные элементы в массив В
for (auto & j : Z) {
int i = 0;
if (j[0] < 0){
B[i] = j[0];
cout << B[i] << " ";
++i;
}
}
весь код целиком
int Z[N][M] = { {-1,-2,-3,-4,-5,-6},
{ 2, 4, 3, 3, 1, 5},
{ 2, 4, 3, 3, 1, 5},
{ 2, 4, 3, 3, 1, 5},
{ 2, 4, 3, 3, 1, 5} };
int count_neg = 0;
for (auto & j : Z) {
if (j[0] < 0)
++count_neg;
}
int *B = new int[count_neg];
cout << "Массив B:" << endl;
for (auto & j : Z) {
int i = 0;
if (j[0] < 0){
B[i] = j[0];
cout << B[i] << " ";
++i;
}
}