03. Numbers
80/100. Идеи къде мога да греша?
https://judge.softuni.bg/Contests/Practice/Index/2474#2
03. Numbers
Write a program to read a sequence of integers and find and print the top 5 numbers that are greater than the average value in the sequence, sorted in descending order.
Input
Read from the console a single line holding space separated number.
Output
Print the above described numbers on a single line, space separated. If less than 5 numbers hold the above mentioned property, print less than 5 numbers. Print “No” if no numbers hold the above property.
Constraints
All input numbers are integers in range [-1 000 000 … 1 000 000]. The count of numbers is in range [1…10 000].
Examples
Input |
Output |
Comments |
10 20 30 40 50 |
50 40 |
Average number = 30. Numbers greater than 30 are: {40, 50}. The top 5 numbers among them in descending order are: {50, 40}. Note that we have only 2 numbers, so all of them are included in the top 5. |
5 2 3 4 -10 30 40 50 20 50 60 60 51 |
60 60 51 50 50 |
Average number = 28.08. Numbers greater than 28.08 are: The top 5 numbers among them in descending order are: {60, 60, 51, 50, 50}. |
1 |
No |
Average number = 1. There are no numbers, greater than 1. |
-1 -2 -3 -4 -5 -6 |
-1 -2 -3 |
Average number = -3.5. Numbers greater than -3.5 are: {-1, -2, -3}. The top 5 numbers among them in descending order are: {-1, -2, -3}. |
Мерси за поправката, знаех, че от там идва проблемът, исках да накарам програмата да провери всяко едно число дали е най-малкото в листа и ако намери такова, да го изтрие докато останат 5 най-големи както е в условието. Сгрешил съм алгоритъма за тази проверка, иначе за всичко това предполагам има методи и може да се съкрати още кодът. Също и за подреждането им в низходящ ред,намерих този удобен метод, който не съм учил и ползвал досега: finalNumbers = finalNumbers.OrderByDescending(x => x).ToList(); Може и без него, но ще се усложни логиката с допълнителни проверки. Все още не съм се научил да ползвам винаги методи.