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

В массиве целых чисел найти n максимальных элементов

02.09.2015, 13:38. Показов 6627. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как массиве целых чисел размером size найти n максимальных?

Добавлено через 1 минуту
массив не изменять
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.09.2015, 13:38
Ответы с готовыми решениями:

В чем ошибка? В массиве целых чисел найти количество максимальных элементов
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 16 #define A 0 #define B 5 void Init(int *a, int n) { ...

Найти минимальный элемент из максимальных элементов строк двухмерного массива целых чисел
Помогите решить задачу:Найти минимальный элемент из максимальных элементов строк двухмерного массива целых чисел. Вывести на экран номер...

Дан массив а, состоящий из n целых чисел (n < = 100). Найти количество максимальных элементов массива
Дан массив а, состоящий из n целых чисел (n &lt; = 100). Найти количество максимальных элементов массива. #include &lt;iostream.h&gt; ...

15
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
02.09.2015, 13:47
1. Находите максимальный элемент и записываете его в другой массив
2. Повторяете N-1 раз нахождение максимального элемента не равного элементам другого массива и запись найденного в другой массив.
0
0 / 0 / 0
Регистрация: 24.08.2015
Сообщений: 12
02.09.2015, 13:51  [ТС]
zss, а если в массиве будут одинаковые элементы?
0
7 / 7 / 8
Регистрация: 17.09.2014
Сообщений: 72
02.09.2015, 13:52
16777216, А массив одномерный или двумерный?
1
0 / 0 / 0
Регистрация: 24.08.2015
Сообщений: 12
02.09.2015, 13:57  [ТС]
Noo, одномерный
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
02.09.2015, 14:06
Лучший ответ Сообщение было отмечено 16777216 как решение

Решение

Скопируй оригинальный массив в другой, отсортируй его по возрастанию и возьми N последних элементов.
1
7 / 7 / 8
Регистрация: 17.09.2014
Сообщений: 72
02.09.2015, 14:35
У меня получился такой код:
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
#include <iostream>
 
using namespace std;
const int MAX=40;
 
int main() {
    char str[MAX];
    int massive[MAX],massive2[MAX];
    int i,j,k,n,temp;
    cout<<"Vvedite kol-vo simvolov v massive:";
    cin>>k;
    for(i=0;i<=(k-1);i++){
        cout<<"Vvedite "<<++i<<" element:"<<'\t';
        --i;
        cin>>massive[i];
        massive2[i]=massive[i];
    }
    for(int i = 0; i < k - 1; i++){ 
        for(int j = i + 1; j < k; j++){
            if (massive2[i] < massive2[j]){
                temp = massive2[i];
                massive2[i] = massive2[j];
                massive2[j] = temp;
            }
        }
    }
    cout<<"Vvedite kol-vo n:";
    cin>>n;
    if(n>k){
        cout<<"ERROR";
        return 0;
    }
    for(i=0;i<=(n-1);i++){
        cout<<' '<<massive2[i];
    }
    
    
    return 0;
    
}
1
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
02.09.2015, 15:24
Лучший ответ Сообщение было отмечено 16777216 как решение

Решение

Noo, Если это задача, которая была Вам выдана на занятиях, то это решение не подойдет.
Т.к. скорее всего предполагается, что никакой массив изменять нельзя.
1
25 / 25 / 15
Регистрация: 12.10.2013
Сообщений: 183
02.09.2015, 15:31
C++
1
2
3
4
5
6
7
8
9
int max = arr[0], count = 1;
for(int i = 1; i < (sizeof(arr)/sizeof(arr[0])); i++){
if(array[i] > max){
max = arr[i];
count = 1;
} else if(arr[i] == max){
count++;
}
}
1
0 / 0 / 0
Регистрация: 24.08.2015
Сообщений: 12
02.09.2015, 18:15  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Скопируй оригинальный массив в другой, отсортируй его по возрастанию и возьми N последних элементов.
самый простой и лучший вариант. только я упорядочу временный массив по убыванию и потом возьму первые n элем.
так вроде проще

Добавлено через 3 минуты
Цитата Сообщение от zss Посмотреть сообщение
Т.к. скорее всего предполагается, что никакой массив изменять нельзя.
только исходный массив нельзя изменять. другие можно.
спасибо всем
0
алкокодер
 Аватар для UnsKneD
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
02.09.2015, 18:30
находишь сначала максимальный элемент, запоминаешь в буфер, затем проходишь заново весь массив и ищещь числа меньше того что уже в буфере но из них находишь максимальное.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
02.09.2015, 18:33
Сортировать весь массив неэффективно. Проще так:

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 <stdio.h>
#include <stdlib.h>
#include <malloc.h>
 
int *Nmax(int *Arr, int sz, int n)
{
    int i,j,k,f;
    int *buf;
    int p,q;
    buf=(int *) calloc(sizeof(int),n);
    buf[0]=Arr[0];
    p=1;
    for (i=1; i<sz; i++)
    {
        for (j=0; j<p; j++)
        {
          f=0;  
          if (Arr[i]>buf[j])
          {
             for (k=p; k>=j; k--) buf[k]=buf[k-1];
             buf[j]=Arr[i];
             f=1;
             if (p<n) p++;
             break;
          } 
        }
        if ((f == 0) && (p < n)) buf[p++]=Arr[i];
    }
    return buf;
}
 
int main(int argc, char *argv[])
{
  
  int Arr[15]={1,2,3,-4,7,1,2,3,-5,6,9,12,1,2,13};  
  int *r;
  int i,k;
  k=3; // число максимальных
  r=Nmax(Arr,15,k);
  for(i=0; i<k; i++) printf("%d\n",r[i]);
  free(r);
  system("PAUSE");  
  return 0;
}
0
алкокодер
 Аватар для UnsKneD
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
02.09.2015, 19:33
Решение без дополнительного массива.

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 n = 10;
    int a[10] = {1,9,2,4,6,7,3,8,-9,5};
    
    int max = a[0];
    int min = a[0];
 
    for(int j = 0; j<10; j++){
        if( a[j] < min ){
            min = a[j];
        }
    }
 
    int max_t = min;
 
    for(int j=0;j<10;j++){
        if(max_t<a[j]){
            max_t = a[j];
        }
    }
 
    for(int i=0; i<n; i++){
        std::cout << (max = max_t) << std::endl;
        max_t = min;
        for(int j=0;j<10;j++){
            if(a[j]<max){
                if(a[j]>max_t){
                    max_t = a[j];
                }
            }
        }
    }
    
 
    return 0;
};
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
02.09.2015, 19:43
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cstdint>
#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
    using namespace std;
    const int a[] { 1, 2, 3, -4, 7, 1, 2, 3, -5, 6, 9, 12, 1, 2, 13 };
    const size_t n = 3;
    vector<int> t(cbegin(a), cend(a));
    partial_sort(t.begin(), t.begin() + n, t.end(), greater<>());
    copy(t.cbegin(), t.cbegin() + n, ostream_iterator<int>(cout, "\n"));
    cout << endl;
}
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
02.09.2015, 20:27
Цитата Сообщение от UnsKneD Посмотреть сообщение
Решение без дополнительного массива.
- и где n максимумов?

Цитата Сообщение от Somebody Посмотреть сообщение
partial_sort
- это "ртуть из градусника"
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
02.09.2015, 20:45
Ладно, спускаемся на уровень ниже:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstdint>
#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
    using namespace std;
    const int a[] { 1, 2, 3, -4, 7, 1, 2, 3, -5, 6, 9, 12, 1, 2, 13 };
    const size_t n = 3;
    vector<int> t(cbegin(a), cend(a));
    make_heap(t.begin(), t.end());
    for (size_t i = 0; i < n; i++)
        pop_heap(t.begin(), t.end() - i);
    copy(t.crbegin(), t.crbegin() + n, ostream_iterator<int>(cout, "\n"));
    cout << endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.09.2015, 20:45
Помогаю со студенческими работами здесь

Дан массив а, состоящий из n целых чисел (n < = 100). Найти количество максимальных элементов массива
не могу найти ошибку #include &lt;iostream.h&gt; #include &lt;conio.h &gt; void main() { int a; int n; int i;

Найти минимальный элемент среди максимальных элементов строк двумерного массива целых чисел
Люди добрые помогите решить задачу. Найти минимальный элемент среди максимальных элементов строк двумерного массива целых...

В заданном массиве целых чисел найти количество нечётных элементов и произведение чисел, расположенных до минимума
Задан массив целых чисел P(n) . Найти - количество нечётных элементов массива; - произведение чисел, расположенных до минимума. ...

В массиве целых чисел найти сумму элементов, кратных 3 и 5, количество элементов и др.
1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка . Найти сумму элементов, значения...

В одномерном массиве состоящий из Н чисел целых элементов найти сумму индексов отрицательное элементов
В одномерном массиве состоящий из Н чисел целых элементов найти сумму индексов отрицательное элементов


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД 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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru