Мне нужно создать программу, которая сортирует 15 чисел от наибольшего к наименьшему, а затем перечисляет пять лучших - PullRequest
0 голосов
/ 07 мая 2020

Мне нужно создать программу, которая сортирует 15 чисел от наибольшего к наименьшему, а затем перечисляет пять лучших. Я кое-что из этого сделал. может кто-нибудь помочь мне составить список пяти первых чисел?

#include <iostream>
using namespace std;

#define MAX 100

int main()
{

    int arr[MAX];
    int n,i,j;
    int temp;


    cout<<"Enter how many numbers to read: ";
    cin>>n;


    for(i=0;i<n;i++)
    {
        cout<<"Enter "<<i+1<<" number ";
        cin>>arr[i];
    }

    for(i=0;i<n;i++)
    {       
        for(j=i+1;j<n;j++)
        {
            if(arr[i]<arr[j])
            {
                temp  =arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }


    cout<<"largest to smallest:"<<endl;
    for(i=0;i<n;i++)
        cout<<arr[i]<<"\t";
    cout<<endl; 

    cout <<"the top five numbers are:"<< endl;



    return 0;

}

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Если вам нужно иметь только 5 верхних элементов, нет необходимости сортировать весь массив. Вы можете сделать std::partial_sort, чтобы иметь только 5 верхних элементов.

std::partial_sort(
   std::begin(arr), 
   std::begin(arr) + 5,
   std::end(arr), 
   [](int x, int y) { return x > y; });
0 голосов
/ 07 мая 2020

Ну вы уже отсортировали по убыванию. Итак, чтобы получить 5 лучших, вам просто нужно вывести первые 5 чисел в массиве.

for (i=0; i<5; i++) cout << arr[i] << endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...