Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/64: Рейтинг темы: голосов - 64, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 26.02.2018
Сообщений: 155

Определить количество элементов массива, которые больше своих соседей

13.03.2018, 18:30. Показов 13787. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив из n элементов. Необходимо вывести количество элементов, которые больше своих «соседей» (следующего и предыдущего элементов).

С клавиатуры вводится натуральное число nn (n≤100). На следующей строке через пробел вводятся n элементов массива. Все числа целые и по модулю не превосходят 100.

В качестве ответа выведите единственное число — количество искомых элементов.

вводные данные:
6
1 2 1 3 2 4

выходные:
3
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2018, 18:30
Ответы с готовыми решениями:

Посчитать количество элементов массива, которые больше своих соседей
Дан массив. Посчитайте, сколько в нем элементов, которые больше своих соседей. ВХОДНЫЕ ДАННЫЕ Программа получает на вход число N....

Вывести количество элементов массива, которые строго больше обоих своих соседей (исправить)
Сначала задано число N — количество элементов в массиве (1N100). Далее через пробел записаны N чисел — элементы массива. Формат...

Перегруженные функции вычисляющие количество элементов, которые больше своих соседей
Написать реализации перегруженных функций: int func(double* arr, int length); int func(char* str); Функция func возвращает количество...

13
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
13.03.2018, 19:39
std::count_if
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
13.03.2018, 20:03
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
 
int main()
{
    int SIZE;
    int count = 0;
    do{
    std :: cin >> SIZE;
    if (SIZE > 100)
    std :: cout << "SIZE > 100\n";
    }
    while (SIZE > 100);
    
    int* array = new int[SIZE];
    
    for (int i = 0; i < SIZE; ++i)
    {
        do
        {
            std :: cin >> array[i];
            if (array[i] < -100 || array[i] >100)
            std :: cout << "Element > 100 || < -100";
        }
        while (array[i] <= -100 || array[i] >=100);
    }
    
    for (int i = 0; i < SIZE; ++i)
    if (array[i] > array[i+1] && array[i] > array[i-1])
    count++;
 
    std :: cout << count;
    delete [] array;
   
return 0;
}
0
1 / 1 / 1
Регистрация: 26.02.2018
Сообщений: 155
13.03.2018, 20:09  [ТС]
При других вводных цифрах не работает.
Другие ввоодные данные:
8
1 1 1 1 2 2 2 2

правильно: 3, программа выводит 0

10
1 9 9 8 -7 -2 -5 9 10 9

правильно: 0, программа выводит 2
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
13.03.2018, 20:19
Kalighost, А с чего в 1 1 1 1 2 2 2 2 ответ будет 3? По условию число должно быть больше соседних(следующего и предыдущего)
Второй пример аналогично

Добавлено через 24 секунды
Ответ будет 0

Добавлено через 5 минут
Так наглядный какие элементы он считает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
 
int main()
{
    int SIZE;
    int count = 0;
    do{
    std :: cin >> SIZE;
    if (SIZE > 100)
    std :: cout << "SIZE > 100\n";
    }
    while (SIZE > 100);
    
    int* array = new int[SIZE];
    
    for (int i = 0; i < SIZE; ++i)
    {
        do
        {
            std :: cin >> array[i];
            if (array[i] < -100 || array[i] >100)
            std :: cout << " Ellement > 100 || < -100";
        }
        while (array[i] <= -100 || array[i] >=100);
    }
    
    for (int i = 0; i < SIZE; ++i)
    if (array[i] > array[i+1] && array[i] > array[i-1])
    {
    std :: cout<<"element: "<<array[i]<<"\n";
    count++;
    }
 
    std :: cout << count;
    delete [] array;
   
return 0;
}
0
1 / 1 / 1
Регистрация: 26.02.2018
Сообщений: 155
13.03.2018, 20:26  [ТС]
вот скриншоты проверки:
Миниатюры
Определить количество элементов массива, которые больше своих соседей   Определить количество элементов массива, которые больше своих соседей  
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
13.03.2018, 20:37
Kalighost, задание какое? Вывести количество элементов больших своих соседей, правильно? Откуда в последовательности 1 1 1 1 2 2 2 2, результат будет 3??? Там нет чисел удовлетворяющих условие. 1 =1, 2>1 но не больше 2 а равно ему, и дальше 2 = 2. Откуда 3?

Добавлено через 36 секунд
Объясните, и я исправлю)

Добавлено через 4 минуты
Так же - 2 > - 5 и больше , - 7
0
1 / 1 / 1
Регистрация: 26.02.2018
Сообщений: 155
13.03.2018, 20:39  [ТС]
Я сейчас перечитываю и понимаю, что Вы правы)) Честно, сам не понимаю, задача гумозно написана!
В любом случае, спасибо Вам огромное за помощь!
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
13.03.2018, 20:43
Kalighost, пожалуйста
1
13.03.2018, 20:54
 Комментарий модератора 
Kalighost, Прежде, чем создавать тему, пользуйтесь поиском по разделу:
Посмотрите, хотя бы, ссылки внизу страницы
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
13.03.2018, 22:46
Kalighost, можно обойтись без количества (nn) если задаётся строка с пробелами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
 
template<class T> void print(T tbeg, T tend){
    while(tbeg!=tend){
cout<<*tbeg++<<' ';
    }
}
 
template<class T> int count_strong_neubors(T tbeg, T tend){
    
    int cnt(0);
    T secondit=tbeg;
    if(secondit==tend)return cnt;
    secondit++;
    if(secondit==tend)return 1;
    if(*tbeg>*secondit)cnt++;
    T thirdit=secondit+1;
    while(thirdit!=tend){
if(*secondit>*tbeg && *secondit>*thirdit)cnt++;
tbeg++; secondit++; thirdit++;
    }
    if(*tbeg<*secondit)cnt++;
return cnt;
}
 
int main(int argc, char* argv[])
{
    cout<<"Type sequence like 1 2 3 4 5 6 5 4 3 and press ctrl+z to finnish\n\
      right when the ^z will apeared press the ENTER key\n";
istream_iterator<int> inpit_start(cin);
istream_iterator<int> inpit_end;
vector<int> v;
 
copy(inpit_start, inpit_end, back_inserter(v));
print(v.begin(), v.end());//это для отладки - закомментируйте
cout<<endl;
cout<<count_strong_neubors(v.begin(), v.end())<<endl;
system("pause");
return 0;
}
0
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
14.03.2018, 00:55
Как бы я рассуждал. У первого и последнего элемента нет соседних.
Начинаем перебор со второго, до предпоследнего.
Сравниваем a[i-1] c a[i] - тым элементом. и a[i] c a[i+1].
0
1 / 1 / 1
Регистрация: 26.02.2018
Сообщений: 155
14.03.2018, 04:16  [ТС]
Код также не работает. Попробуйте ввести данные из примера.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
14.03.2018, 08:26
Цитата Сообщение от vvm28 Посмотреть сообщение
Как бы я рассуждал. У первого и последнего элемента нет соседних.
Не может быть. У каждого есть минимум (и максимум) один сосед. И этот сосед может быть меньше.

Цитата Сообщение от Kalighost Посмотреть сообщение
Код также не работает. Попробуйте ввести данные из примера.
1 2 1 3 2 4 возвращает ровно 3
не вводите 6. Сделайте так как просит приглашение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2018, 08:26
Помогаю со студенческими работами здесь

Сформировать вектор М из элементов массива А, которые больше своих соседей
Дан массив А(n), n &lt;= 15, целого типа. Сформировать вектор М из элементов А, которые больше своих соседей, то есть ai &gt; ai-1 и ai &gt;...

Найти число элементов массива, которые больше своих “соседей”
Найти число элементов массива, которые больше своих “соседей”, т.е. предшествующего и последующего элементов.

Найти количество элементов массива значения которых больше своих соседей
Одномерный массив задается с клавиатуры.Вывести на экран кол-во значений которые больше своих соседей. Моё убожество в студию... int...

Найти сумму элементов массива, которые больше своих "соседей" справа и слева
В массиве из N элементов найти сумму тех элементов, которые больше своих &quot;соседей&quot; справа и слева.

Выбрать из массива элементы, которые в 2 раза больше своих соседей
Дан массив a, сформировать новый массив состоящий из элементов в 2 раза больше предыдущего и следующего |2|4|2|3|6|3| -&gt; |4|6|


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru