Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как в c++ из двумерного массива сделать одномерный?

Name_CameGo212 Ученик (136), закрыт 5 дней назад
Дан массив D(4,15). В каждом столбце, индекс которого кратен 5, найти сумму положительных элементов и сформировать из этих значений одномерный массив

#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
setlocale(0, "");
int D[4][15];
srand(time(NULL));
cout << "Первоначальный массив:\n";
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 15; j++)
{
D[i][j] = -20 + rand() % (40);
cout << setw(4) << D[i][j];
}
cout << endl;

}
cout << endl;

int sum = 0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 15; j++) {
if (D[i][j] > 0 & j % 5 == 0) {
sum = sum + D[i][j];
}
}
}

cout << "сумма положительных элементов, находящихся в столбике кратном 5 = " << sum << endl;
system("pause>>void");
return 0;

}
Лучший ответ
Сергей Гений (57680) 1 месяц назад
 #include   
#include
#include
#include
using namespace std;
#define STR 4
#define COL 15
int main()
{
setlocale(0, "");
int D[STR][COL];
srand(time(NULL));
cout << "Первоначальный массив:\n";
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 15; j++)
{
D[i][j] = -20 + rand() % (40);
cout << setw(4) << D[i][j];
}
cout << endl;

}
cout << endl;
int S[COL / 5]{};
//для хранения каждого 5-го столбика делаем массив
//в 5 раз меньше количества столбцов.


for (int i = 0; i < STR; i++)
{
for (int j = 0; j < COL; j+=5) //учитываем только каждый 5-й столбик (+=5)
{
if (D[i][j] > 0) //и поэтому проверка на j%5 не нужна
{
S[j/5] += D[i][j]; //суммируем в массив результатов
}
}
}

cout << "сумма положительных элементов, находящихся в столбиках кратных 5 = " << endl;
for (int i = 0; i < COL / 5; i++) cout << S[i] << " ";
system("pause>>void");
return 0;

}
Остальные ответы
Весёлый Молочьник Знаток (338) 1 месяц назад
Тебе тут не ответят, иди на форум
Björn Andersson Просветленный (24190) 1 месяц назад
Чтобы решить задачу и сформировать одномерный массив из сумм положительных элементов столбцов, индекс которых кратен 5, можно сделать следующие изменения в вашем коде:

1. Создать одномерный массив для хранения сумм положительных элементов.
2. Итерировать по столбцам, которые кратны 5.
3. Для каждого такого столбца найти сумму положительных элементов и сохранить её в одномерный массив.

Ниже приведён пример кода, который это делает:

#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>

using namespace std;

int main()
{
setlocale(0, "");
int D[4][15];
srand(time(NULL));
cout << "Первоначальный массив:\n";
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 15; j++)
{
D[i][j] = -20 + rand() % (40);
cout << setw(4) << D[i][j];
}
cout << endl;
}
cout << endl;

// Одномерный массив для хранения сумм положительных элементов столбцов, кратных 5
int sumArray[3]; // Всего будет 3 столбца с индексами кратными 5 (0, 5, 10)
int index = 0;

// Итерируем по столбцам, которые кратны 5
for (int j = 0; j < 15; j += 5) {
int sum = 0;
for (int i = 0; i < 4; i++) {
if (D[i][j] > 0) {
sum += D[i][j];
}
}
sumArray[index++] = sum; // Сохраняем сумму в массив
}

// Выводим результаты
cout << "Суммы положительных элементов в столбцах с индексами кратными 5:\n";
for (int i = 0; i < 3; i++) {
cout << "Сумма для столбца " << i * 5 << " = " << sumArray[i] << endl;
}

system("pause>>void");
return 0;
}

Объяснение изменений:
1. Мы создаем одномерный массив `sumArray` для хранения сумм.
2. Внешний цикл итерируется по столбцам с индексами кратными 5 (0, 5, 10).
3. Внутренний цикл суммирует положительные элементы для текущего столбца.
4. Суммы сохраняются в `sumArray`.
5. Затем результаты выводятся.

Этот код гарантирует, что вы получаете сумму положительных элементов для столбцов с индексами 0, 5 и 10, и сохраняете их в одномерный массив.
Name_CameGo212Ученик (136) 1 месяц назад
Огромное спасибо????
λ Искусственный Интеллект (231633) 1 месяц назад
любой массив можно пройти
как однметрый..
Похожие вопросы