Дан одномерный массив целых чисел А. Создать новый массив В, занеся в каждый элемент минимальный среди всех предыдущих элементов массива А
#include <iostream>
#include <locale.h>
#include <conio.h>
#include <math.h>
using namespace std;
for(i=0; i<n; i++) {
if (i==0) B[i] = A[i];
else {
if (A[i-1] < B[i-1]) B[i] = A[i-1];
else B[i] = B[i-1];
}
void main() {
setlocale(0, "");
int n, i
int *A;
cout « "Введите размер массива:" « endl;
cin » n;
A = new int[n];
cout « "Введите массив A:" « endl;
for (i = 0; i < n; i++) {
cin » A[i];
}
Помогите с этим заданием, пожалуйста. Дан одномерный массив целых чисел А. Создать новый массив В, занеся в каждый элемент минимальный среди всех предыдущих элементов массива А (в первый элемент заносится первый элемент А). Подсчет минимального элемента из предыдущих реализуется в виде функции.
Ответы (2 шт):
Автор решения: HolyBlackCat
→ Ссылка
Модное решение в одну строчку:
int *B = new int[n];
std::inclusive_scan(A, A + n, B, [](int x, int y){return std::min(x, y);});
Но черта с два у вас такое примут. :Р Если хотите нормальное решение, попытайтесь что-то сделать сами и покажите свой код, будем чинить.
Автор решения: Mikhailo
→ Ссылка
Вот так:
int main() {
int n;
cin >> n;
int* A = new int[n], *B = new int[n];
cin >> A[0];
int m = A[0];
B[0] = A[0];
for (int i = 1; i < n; i++) {
cin >> A[i];
if (m > A[i]) m = A[i];
B[i] = m;
}
for (int i = 0; i < n; i++) {
cout << B[i] << " ";
}
}