C/C++

Задача на c++ помогите решить без рандомного заполнения массива

Дан массив размера N. Найти номер его всех локальных минимумов
На c++
#include <iostream>
using namespace std;
int main() {
cout << "n: ";
size_t n;
cin >> n;
auto box = new int[n];
cout << "Elements: ";
for (auto i = 0U; i < n; ++i) cin >> box[i];
cout << "Position: ";
if (n > 1 && box[0] < box[1]) cout << "1 ";
int x = 2;
for (auto i = 1U; i < n - 1; ++i, ++x) {
if (box[i - 1] > box[i] && box[i] < box[i + 1]) {
cout << x << ' ';
}
}
if (n > 1 && box[n - 1] < box[n - 2]) cout << x << ' ';
puts("");
delete[] box;
system("pause > nul");
}
R. G
R. G
86 009
Лучший ответ
Уланбек Бекмурзаев Николай, немного поправьте код, первый и последний элементы не являются ЛМ.
Это не моё утверждение — онлайн-ресурсы не принимают!
Oleg Saych ☺ Надо же! Ещё и онлайн-ресурсы не принимают локальные минимумы! Так что- в пояс им за это кланяться ?
☝А вообще-то в этом задании вроде бы требуется вывести номера всех локальных минимумов, включая и крайние, если уж на то пошлó. В случае массива {1,0,0,1} оба нуля, конечно же, являются локальными минимумами и их номера, естественно, надо выводить как 2 и 3. В тот-то и дело, что они минимальные, но не укальные! А где сказано про уникальность? Нигде. А вот в случае массива {1,2,2,3} третий номер (то есть вторая двойка !) наряду с первой двойкой- это один из минимальных элементов трёх последних компонент массива. А нужно ли номер 3 выводить или не нужно, хотя он вроде на самом деле один из минимальных в последней тройке чисел массива, и сам pigasdan скорее всего ответить не сможет... )))
В массиве { 1, 1, 1, 1, 1 } все элементы минимальны, как локально, так и глобально, но они ещё и все равны! Поэтому утверждение о том, что локально-минимальный элемент должен быть обязательно меньше соседних, не выдерживает критики.
Прилагаемая программа выдаёт номера ВСЕХ локально-минимальных элементов (1, 3, 6, 8, 10), а не части из них:
Валера Ермаков
Валера Ермаков
29 440
Александр Рыбалка правда?) а по-моему утверждение что в массива из 1 есть минимум и максимум не выдерживает никакой критики. они именно равны. Про точки перегиба на графике функции, определение ее возрастания и убывания, я уверен, вы в курсе.
Александр Рыбалка определение минимума приведите пожалуйста, очень любопытно ваше особое видиние, а потом поищите в интернете определение минимума.
локальный минимум в массиве это ситуация, когда текущий элемент массива меньше окружающих его элементов.
В вашем случае одномерного массива
Для a[0] т. о. условие будет a[0]<a[1],
для a[N] будет a[N-1]<A[N-2],
для остальных элементов массива a[i] локальный минимум если (a[i]<a[i-1] и a[i]<a[i+1])
теперь, думаю, вам понятно и код осилите сами.
ты учишься сам и решай, или ты когда на работу устроишься тоже так будешь спрашивать какждую задачу?