Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 04.09.2012
Сообщений: 94
1

Дан список, переместить локальные максимумы

30.04.2013, 18:20. Просмотров 557. Ответов 5
Метки нет (Все метки)

Дан список из n целых чисел https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{1},{a}_{2},..{a}_{n}. Переместить в начало списка все элементы, которые являются локальными максимумами, то есть больше своих соседей.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2013, 18:20
Ответы с готовыми решениями:

Найти локальные максимумы с++
Даны три массива A, B, C. Найти общее количество локальных максимумов в этих массивах. С...

Заменить все локальные максимумы на 0
Заполнить массив n целых чисел числами из потока ввода. Дополнительного массива не использовать....

Как найти локальные максимумы?
Подскажите пожалуйста как найти локальные максимумы??

Локальные максимумы в двумерном массиве
Здравствуйте, нуждаюсь в помощи Необходимо найти в двумерном массиве(любого размера) все...

5
380 / 351 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
30.04.2013, 19:59 2
Mirazhana,

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 <algorithm>
#include <iterator>
#include <vector>
#include <time.h>
#include <cstdlib>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int size(10);
    srand(time(NULL));
 
    vector<int> coll(size);
 
    for_each(coll.begin(), coll.end(), [](int &elem) { elem = rand() % 21;});
    copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
    cout << endl;
 
    for(size_t i = 0, j = 0; i < coll.size(); ++i){
        if(i == 0){
            if(coll[i] > coll[i+1])
                ++j;
        }
        else if(i == coll.size() - 1){
            if(coll[i] > coll[i-1]){
                swap(coll[j], coll[i]);
                ++j;
            }
        }
        else{
            if(coll[i] > coll[i+1] && coll[i] > coll[i-1]){
                swap(coll[j], coll[i]);
                ++j;
            }
        }
    }
 
    cout << endl;
    copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
 
    cout << "\n\n";
    return 0;
}
0
1 / 1 / 0
Регистрация: 04.09.2012
Сообщений: 94
01.05.2013, 10:26  [ТС] 3
Ой, а можно как нибудь попроще это все сделать?
0
101 / 102 / 43
Регистрация: 06.03.2012
Сообщений: 478
01.05.2013, 14:00 4
yoghurt92, скажите,куда записать эти максимумы,может создать ещё один массив,и туда поместить их?
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
45
46
47
48
49
50
51
52
53
54
55
56
#include "stdafx.h"
#include <iostream>
#include <clocale>
#include <ctime>
#include <iomanip>
 
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL,"Russian");
    srand (time(NULL));
 
    const int N = 10;
    int massiv [N];
 
    for (int i = 0;i<N;i++)
    {
        massiv[i] = rand () % 10;
            cout<<setw (3)<<massiv[i];
    }
    cout<<endl;
 
    int temp = 0;
    int max;
    for (int i = 0;i<N;i++)
    {
        if ((massiv[i] > massiv[i-1]) && massiv[i] > (massiv [i + 1]))
        {   
            max = massiv[i];
            temp++;
        }
    }
 
    cout<<max;
    cout<<endl;
    cout<<"Локальные максимумы: "<<temp;
    cout<<endl;
 
    int a;
    for (int i = 0;i<N;i++)
    {
        a = max;
        max = massiv[i];
        massiv[i] = a;
    }
 
    for (int i = 0;i<N;i++)
    {
        cout<<setw (3)<<massiv[i];
    }
 
    system ("pause");
    return 0;
}
незнаю ,что-то не приходит как записать максимумы,только насчёт второго массива
0
380 / 351 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 18:33 5
faLek, массив, файл, консоль куда захотите.

Добавлено через 1 час 59 минут
Mirazhana, так пойдет?

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
45
46
47
48
49
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <time.h>
#include <cstdlib>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int size(10);                       //размер массива
    srand(time(NULL));
 
    vector<int> coll(size);             //динамический массив из 10 элементов
 
    for(unsigned i = 0; i < coll.size(); ++i){
        coll[i] = rand() % 21;                  //заполняем массив рандомно
        cout << coll[i] << ' ';                 //выводим по элементам
    }
    cout << endl;
 
    //перемещаем локал максимумы в начало
    for(size_t i = 0, j = 0; i < coll.size(); ++i){
        if(i == 0){
            if(coll[i] > coll[i+1])
                ++j;
        }
        else if(i == coll.size() - 1){
            if(coll[i] > coll[i-1]){
                swap(coll[j], coll[i]);         //функция обмена элементов
                ++j;
            }
        }
        else{
            if(coll[i] > coll[i+1] && coll[i] > coll[i-1]){
                swap(coll[j], coll[i]);
                ++j;
            }
        }
    }
 
    //вывод сортированной последовательности
    for(unsigned i = 0; i < coll.size(); ++i){
        cout << coll[i] << ' ';
    }
 
    cout << "\n\n";
    return 0;
}
2
1 / 1 / 0
Регистрация: 04.09.2012
Сообщений: 94
01.05.2013, 21:33  [ТС] 6
Огромное спасибо =* очень помогли
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2013, 21:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывести все локальные максимумы массива
Доброго времени суток ! Ребят, помогите набросать код Вот задача: ввести длину массива и массив...

Найти локальные максимумы вектора (STL)
Задания к выполнению. 1. Создать вектор (пусть это будет целочисленный вектор). ...

Заменить все локальные минимумы и максимумы данной матрицы на 0
Дана матрица размера M x N. Элемент называется локальным минимумом (максимумом), если он меньше...

Найти все локальные минимумы и максимумы в заданном массиве
В университете задали написать программу, уже не первую неделю над ней бьюсь. Тема: одномерные...

Найти максимумы в каждом столбце матрицы и переместить их на главную диагональ
Дана квадратная матрица. Найти максимумы в каждом столбце и переместить их на главную диагональ

Дан массив размера N. Обнулить все его локальные максимумы
дан массив размера N. Обнулить все его локальные максимумы (то есть числа,большие своих соседей).


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

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

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