Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
валентин777
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 45
1

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

26.08.2011, 19:25. Просмотров 2578. Ответов 8
Метки нет (Все метки)

Найти число элементов массива, которые больше своих “соседей”, т.е. предшествующего и последующего элементов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2011, 19:25
Ответы с готовыми решениями:

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

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

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

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

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

8
Overmind024
99 / 99 / 27
Регистрация: 10.09.2010
Сообщений: 267
27.08.2011, 10:59 2
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
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
 
using namespace std;
 
 
int main()
{
    vector<int> v;
    cout << "Enter sequence end by (Ctrl+Z)" << endl;
    copy(istream_iterator<int>(cin),istream_iterator<int>(),back_inserter(v));
 
    if(v.empty())
    {
        cout << "Vector is empty!" << endl;
    }
    else
    {
        size_t count = v.size();
        for(vector<int>::iterator i = v.begin();i != v.end(); --count )
        {
            i = adjacent_find(i,v.end());
            i = (i == v.end())?i:++i;
        }
 
        cout << "count = " << count*2 << endl;
    }
 
    system("pause");
 
    return 0;
}
1
валентин777
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 45
27.08.2011, 16:34  [ТС] 3
А На простом С можно ???????????
0
Сыроежка
Заблокирован
27.08.2011, 20:56 4
Цитата Сообщение от Overmind024 Посмотреть сообщение
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
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
 
using namespace std;
 
 
int main()
{
    vector<int> v;
    cout << "Enter sequence end by (Ctrl+Z)" << endl;
    copy(istream_iterator<int>(cin),istream_iterator<int>(),back_inserter(v));
 
    if(v.empty())
    {
        cout << "Vector is empty!" << endl;
    }
    else
    {
        size_t count = v.size();
        for(vector<int>::iterator i = v.begin();i != v.end(); --count )
        {
            i = adjacent_find(i,v.end());
            i = (i == v.end())?i:++i;
        }
 
        cout << "count = " << count*2 << endl;
    }
 
    system("pause");
 
    return 0;
}
Ваша программа к поставленной задаче вообще никакого отношения не имеет.
0
Sahon
10 / 10 / 1
Регистрация: 09.04.2010
Сообщений: 141
27.08.2011, 21:46 5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#define LENGTH 80
 
main(){
 
int array[LENGTH] = {1, 5, 6, 3, 12, 36, 87, 91, 34, 85},
counter = 0;
 
for (int n = 1; n < LENGTH-1; n++)
if (array[n] > array[n-1] && array[n] > array[n+1])
counter++;
 
printf("%d", counter);
 
return 0;
}
Добавлено через 15 минут
При желании можно автоматизировать ввод элементов массива... словом, сделать красиво.
P.S. Массив из 80 элементов. По этому все элементы после 85 равны нулю. Из-за этого counter == 3.
0
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,531
27.08.2011, 21:58 6
Sahon, тогда уж так
C++
1
2
3
4
if (array[n] > array[n-1] && array[n] > array[n+1]) {
counter++;
n++;
}
1
Sahon
10 / 10 / 1
Регистрация: 09.04.2010
Сообщений: 141
27.08.2011, 22:00 7
Цитата Сообщение от kravam Посмотреть сообщение
Sahon, тогда уж так
C++
1
2
3
4
if (array[n] > array[n-1] && array[n] > array[n+1]) {
counter++;
n++;
}
А зачем n++? Оно есть в for.
0
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,531
27.08.2011, 22:03 8
А затем, что если найдено число, которое больше своих соседей, то следующее число не может быть таковым. Значит, его можно смело перепрыгнуть. Для этого вводится дополнительное n++
(Без этого мы будем иметь лишнюю проверку условия. Лишнюю потому, что условие заведомо ложно)
1
Sahon
10 / 10 / 1
Регистрация: 09.04.2010
Сообщений: 141
27.08.2011, 22:04 9
Цитата Сообщение от kravam Посмотреть сообщение
А затем, что если найдено число, которое больше своих соседей, то следующее число не может быть таковым. Значит, его можно смело перепрыгнуть. Для этого вводится дополнительное n++
(Без этого мы будем иметь лишнюю проверку условия. Лишнюю потому, что условие заведомо ложно)
Тогда да.
0
27.08.2011, 22:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2011, 22:04

Выбрать из массива элементы, которые в 2 раза больше своих соседей
Дан массив a, сформировать новый массив состоящий из элементов в 2 раза больше...

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

Вывести на экран те элементы списка, которые больше своих соседей
Дан список из n целых чисел a1,a2,..,an. Вывести на экран те элементы списка,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru