Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/55: Рейтинг темы: голосов - 55, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 11.12.2017
Сообщений: 76
1

3 наибольших элемента в массиве

11.12.2017, 21:30. Показов 11184. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Код есть, но не знаю как подправить, выводит массив целиком

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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    int const N = 20;
    int N, i, j, Max;
    cout << "Vvedi kol-vo elementov: ";
    cin >> N;
    int a[N];
    int max[3];
    max[0] = a[0];
    max[1] = a[1];
    max[2] = a[2];
    for (i = 3; i<N; i++)
    {
        if (max[0] < a[i])
            max[0] = a[i];
        else if (max[1] < a[i])
            max[1] = a[i];
        else if (max[2] < a[i])
            max[2] = a[i];
    }
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2017, 21:30
Ответы с готовыми решениями:

Найти три наибольших элемента в массиве
Здравствуйте! Помогите, пожалуйста, с задачей: необходимо найти три наибольших элемента в массиве....

Найти 3 наибольших элемента в массиве целых чисел
Задан массив целых чисел. Найти 3 наибольших элемента в нем.

В массиве А определить 5 наибольших значений и, расположив их по убыванию, вставить в массив В после его наименьшего элемента
1. Даны два массива А(n) и B(m) целых чисел. В массиве А определить 5 наибольших значений и,...

Найти 3 наибольших элемента
Дано целое число n(&gt;3) и набор из n чисел.Найти 3 наибольших элемента из данного набора и вывести...

5
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
11.12.2017, 22:02 2
Лучший ответ Сообщение было отмечено Kuzia domovenok как решение

Решение

Этот код по идее и компилиться не должен, не то что еще 3 наибольших находить.
1
99 / 98 / 11
Регистрация: 12.09.2016
Сообщений: 195
12.12.2017, 00:08 3
Ты сначала говоришь что у тебя есть целая константа N=20,в следующей строке ты уже говоришь что это у тебя просто целое число,а потом предлагаешь пользователю его ввести!
C++
1
int a [N] // это вообще работать не будет
2
3 / 3 / 3
Регистрация: 10.12.2017
Сообщений: 3
12.12.2017, 02:41 4
Лучший ответ Сообщение было отмечено ios21 как решение

Решение

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
#include <iostream>
 
 
 
int main()
{
    int N;
    std::cout << "Vvedi kol-vo elementov: ";
    std::cin >> N;
    int mas[N];
    for (int i = 0; i < N; i++) {
        std::cin >> mas[i];
    }
    int max, nmax;
   for (int x = N-1; x != N-4; x--)
   {
       max = mas[0];
       nmax = 0;
       for (int k = 1; k < x+1; k++) {
          if (max < mas[k]) { 
              max = mas[k];
              nmax = k;
          }
       }
       mas[nmax] = mas[x];
       mas[x] = max;
    
    
   }
    std::cout << "три наибольших числа: " << mas[N-1] << ", " << mas[N-2] << ", " << mas[N-3];
}
+STL

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
#include <iostream>
#include <vector>
#include <algorithm> 
 
int main()
{
    int N;
    std::cout << "Vvedi kol-vo elementov: ";
    std::cin >> N;
    
   std::vector<int> mas;
   
   for (int i = 0; i < N; i++) {
        int x;
        std:: cin >> x;
        mas.push_back(x);
    }
   
   std::sort (mas.begin(), mas.end());
   
   
   for (size_t i = mas.size() ; i > mas.size() - 3;) {
       std:: cout << mas[--i] << " ";
   }       
 }
2
12 / 9 / 5
Регистрация: 02.06.2012
Сообщений: 25
12.12.2017, 03:56 5
вот как пример работы со статическим и динамическим массивом

программа создает динамический массив случайных чисел и находит sizeLargestArr=3 наибольших числа.
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
57
58
59
60
61
62
63
#include<iostream>
using namespace std;
 
int main(){
 
    /* это динамический массив (для него необходимо выделить память)*/
    int *arr;                                   //наш массив
    int sizeArr=0;                             //размер массива
 
    /*а тут массив с фиксировным размером (размер массива константа)*/
    const int sizeLargestArr=3;
    int largestArr[sizeLargestArr];
 
    cout<<"wriste the size of the array ";
    cin>>sizeArr;
 
    if(sizeArr<=0){                             //если массив пустой или отр. значение
        cout<<"size in write incorrectly";
        return -1;
    }
 
    arr=new int[sizeArr];                       //создадим массив
    for(int i=0;i<sizeArr;i++)                  //заполним массив случайными числами
        arr[i]=rand()%100;
 
    int largesI=0;                              //индекс максимального числа по умолчанию первый елемент массива максимальный
 
    for(int i=0;i<sizeLargestArr; i++){          //условия выполнены если найдены sizeLargestArr наибольших чисел
        for(int j=0;j<sizeArr;j++){              //от первого до последнего елемента массива
            if(arr[j]>arr[largesI]){                    //число макс
                if(i==0)                                // первое макс число
                    largesI=j;
                else if(arr[j] < arr[largestArr[i-1]])  //число меньше предыдущего максимального
                    largesI=j;
            }
        largestArr[i]=largesI;                  //запишем индекс макс елемента в массив
        }
 
        largesI=0;
        while (arr[largesI]>=arr[largestArr[i]]){//найдем первое не максимальное число
            if(largesI > sizeArr-1){            //чисел наибольших меньше чем размер массива
                cout<<"the maximum number is less than the size of the array"<<endl;
                largesI=largestArr[i];
                break;
            }
            largesI++;
        }
    }
 
 
 
    cout<<"output array: "<<endl;                //віведм наш массив
    for(int i=0;i<sizeArr;i++)
        cout<<arr[i]<<" ";
 
    cout<<endl<<endl<<"display the index and the value "<< sizeArr<<" largest elements of the array"<<endl;
 
    for(int i=0;i<sizeLargestArr;i++)           //наиболшие значения
        cout<<"arr["<<largestArr[i]<<"]= "<<arr[largestArr[i]]<<endl;
 
    delete []arr;//очищаем память 
    return 0;
}
1
12 / 9 / 5
Регистрация: 02.06.2012
Сообщений: 25
12.12.2017, 04:02 6
результат работы программы:
3 наибольших элемента в массиве
1
12.12.2017, 04:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2017, 04:02
Помогаю со студенческими работами здесь

Найти 3 наибольших элемента матрицы
Помогите, пожалуйста, написать программу на С++ для нахождения в матрице 3х3 трех наибольших...

Найти 3 наибольших элемента массива
найти 3 найбольшые элементов массива int arrayAll = ;

Поиск в массиве: найти 5 наибольших элементов
Есть массив чисел, в нем найти 5 крупнейших чисел и вывести на экран. Вот мой код, но он не...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru