не могу вывести массив большие своих соседей справа и слева

#include <iostream>
#include <ctime>

using namespace std;

int main()
{
    setlocale(LC_ALL, "Rus");
    srand(time(NULL));
    int const DOR = 20;
    double arr[DOR];
    int i, a = 0, b = 10;
    for (int i = 0; i < DOR; i++)
    {
        arr[i] = (double)rand() * (b - a) / RAND_MAX + a;
    }
    for (int i = 0; i < DOR; i++)
    {
        printf("%6.2lf \r \n", arr[i]);
    }
    for (int i = 0; i < DOR; i++)
    {
        if ((arr[i] > arr[i - 1]) && (arr[i] > arr[i + 1]))
        {        
            printf("%6.2lf \r \n", arr[i]);
        }
    }
}

само задание :

Сформировать с помощью датчика случайных чисел в диапазоне [0,10] массив из 20 элементов вещественного типа. Вывести его на экран. Вывести элементы массива, большие своих соседей справа и слева.


Ответы (1 шт):

Автор решения: Zhihar

вам надо найти элементы массива arr[i], такие, что

(arr[i] > arr[i - 1]) && (arr[i] > arr[i + 1])

вот и все

ну естественно ни первый ни последний элементы массива не могут быть выбраны, так что цикл будет от 1 до DOR - 1

for (int i = 1; i < DOR - 1; i++)
{
    if ((arr[i] > arr[i-1]) && (arr[i] > arr[i+1]))
    {
         printf("%6.2lf \r \n", arr[i]);
    }
}
→ Ссылка