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

Написать процедуру, которая ищет первых N максимальных чисел из массива

30.10.2018, 23:04. Показов 3077. Ответов 6

Студворк — интернет-сервис помощи студентам
Написать процедуру, которая ищет первых N максимальных чисел из массива.
Объясню: надо написать такую процедуру, которая ищет N кол-во максимальных чисел в одномерном массиве. N - задается пользователем, массив заполнить случайными числами.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2018, 23:04
Ответы с готовыми решениями:

Написать процедуру, которая ищет первых N максимальных чисел из массива
Сформировать меню вызова функций данной практики по их номеру через switch конструкцию. Результатом выхода из меню является ввод нуля: ...

Написать процедуру и функцию, которая ищет количество положительных чисел в массиве
11) Создать приложение. Написать процедуру и функцию, которая подсчитывает количество положительных элементов в массиве и определяет...

Разработайте программу, которая содержит процедуру Sum(N,S), которая находит сумму N первых натуральных и найти сумму первых 10,20 чисел
PASCAL Помогите пожалуйста! Решите, заранее спасибо! Разработайте программу, которая содержит процедуру Sum(N,S), которая находит сумму...

6
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
30.10.2018, 23:35
pogen, здравствуйте! Вот программа:

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
#include <iostream>
#include <queue>
#include <set>
#include <algorithm>
#include <ctime>
#include <cstdlib>
 
    using namespace std;
    
void f(int* arr, int size, int n) {
    priority_queue<int> queue; 
    set<int> s; 
    for (int i = 0; i < size; i++) {
        if (s.find(arr[i]) == s.end()) { 
            queue.push(arr[i]); 
            s.insert(arr[i]);
        }
    }
    for (int i = 0; i < n; i++) { 
        cout << queue.top() << " "; 
        queue.pop();
    }
}
  
int main() {
    srand(time(NULL));
    int n, m; 
    cout << "Enter an array size:\n";
    cout << "m = ";
    cin >> m; 
    int* arr = new int[m]; 
    cout << "A random array:\n";
    for (int i = 0; i < m; i++) {
        arr[i] = -50 + rand() % 101; //[-50; 50]
        cout << arr[i] << " "; 
    }
    cout << "\nEnter a number:\n";
    cout << "n = ";
    cin >> n; 
    cout << "Output of the program:\n";
    f(arr, m, n);
    delete [] arr; 
    system("pause"); 
    return 0;
}
0
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 26
31.10.2018, 00:03  [ТС]
Fixer_84, а как будет выглядеть код, если оставить только две библиотеки - #include <iostream>, #include <ctime>. Просто остальные мы не проходили еще, напишите код только с этими библиотеками, спасибо!
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
31.10.2018, 00:08
Вот небольшая поправка к коду. А без этих библиотек я напишу уже не сегодня.

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 <queue> 
#include <set> 
#include <algorithm> 
#include <ctime> 
#include <cstdlib>
 
    using namespace std;
 
void f(int* arr, int size, int n) {
    priority_queue<int> queue;
    set<int> s;
    for (int i = 0; i < size; i++) {
        if (s.find(arr[i]) == s.end()) {
            queue.push(arr[i]);
            s.insert(arr[i]);
        }
    }
    if (n <= queue.size()) {
        for (int i = 0; i < n; i++) {
            cout << queue.top() << " ";
            queue.pop();
        }
    } else {
        cout << "No such amount of maximums!\n";
    }
}
 
int main() {
    srand(time(NULL));
    int n, m;
    cout << "Enter an array size:\n";
    cout << "m = ";
    cin >> m;
    int* arr = new int[m];
    cout << "A random array:\n";
    for (int i = 0; i < m; i++) {
        arr[i] = -50 + rand() % 101; //[-50; 50]
        cout << arr[i] << " ";
    }
    cout << "\nEnter a number:\n";
    cout << "n = ";
    cin >> n;
    cout << "Output of the program:\n";
    f(arr, m, n);
    delete[] arr;
    system("pause");
    return 0;
}
0
166 / 109 / 57
Регистрация: 30.08.2018
Сообщений: 357
31.10.2018, 01:42
Цитата Сообщение от Fixer_84 Посмотреть сообщение
void f(int* arr, int size, int n)
зачем там очередь ? не понял что-то.
тоже самое ведь?
C++
1
2
3
4
5
6
7
8
void f(int* arr, int size, int n) {
 
    set<int> s(arr, arr+ size);
    auto rit = s.rbegin();
    for (int i = 0; i < n && rit != s.rend(); ++i, ++rit) {
        cout << *rit << " ";
    }
}
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
31.10.2018, 01:54
Лучший ответ Сообщение было отмечено pogen как решение

Решение

pogen, вот только с помощью <iostream> и <ctime>:

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
#include <iostream> 
#include <ctime>
 
    using namespace std;
    
void f(int* arr, int size, int n) {
    for (int i = 0; i < size; i++)
        for (int j = size - 1; j > i; j--)
            if (arr[j] > arr[j-1])
                swap(arr[j], arr[j-1]);
    int k = 0;
    for (int i = 0; i < size - 1; i++) {
        if (arr[i+1] != arr[i]) {
            k++;
            if (k == n) break;
            if (k == 1) cout << arr[i] << " " << arr[i+1] << " ";
            else cout << arr[i+1] << " ";
        }
    }
}
 
int main() {
    srand(time(NULL));
    int n, m;
    cout << "Enter an array size:\n";
    cout << "m = ";
    cin >> m;
    int* arr = new int[m];
    cout << "A random array:\n";
    for (int i = 0; i < m; i++) {
        arr[i] = -50 + rand() % 101; //[-50; 50]
        cout << arr[i] << " ";
    }
    cout << "Enter a number:\n";
    cout << "n = ";
    cin >> n;
    cout << "Output of the program:\n";
    f(arr, m, n);
    delete [] arr;
    system("pause");
    return 0;
}
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
31.10.2018, 18:10
зачем там очередь ? не понял что-то.
JaponDemon, здравствуйте. Да, уже поздно было и я не подумал. Можно просто множеством обойтись, но тогда массив сортировать надо. А у меня сразу в priority_queue без повторов записывается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.10.2018, 18:10
Помогаю со студенческими работами здесь

Написать процедуру нахождения количества максимальных элеметнов массива
Написать процедуру нахождения кол-ва максимальных элеметнов массива

Cоздать процедуру, которая ищет слово в массиве и выводит набор индексов массива совпадающих элементов
Имеется массив слов.Необходимо создать процедуру,которая ищет в массиве, переданное в параметре процедуры, слово и выводит набор индексов...

Составить процедуру, которая выводит квадраты первых 40 чисел в виде таблицы
Составить процедуру, которая выводит квадраты первых 40 чисел в виде таблицы (в каждой строке 4 числа). Dim b(1 To 100, 1 To 100)...

Шаблоны: написать функцию, которая ищет произведение среди двух, трех и четырех целых и действительных чисел
Написать функцию dob, которая ищет произведение среди двух, трех и четырех целых и действительных чисел

С помощью оператора while написать программу, которая ищет произведение 10 произвольно введенных чисел и выводить его на печать
С помощью оператора while написать программу, которая ищет произведение 10 произвольно введенных чисел и выводить его на печать.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru