Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Losko avatar Losko 69 Точки

Programming Fundamentals Exam - 12 June 2016 / 01 Numbers

Имам проблем с тази задача. 90/100 резултата на конзолата е верен, но на проверка 8 гърми.... Ако някой ми каже защо ще бъде много хубаво.
Ето и условието:
 

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.

Constrains

All input numbers are integers in range [-1 000 000 … 1 000 000]. The count of numbers is in range [1…10 000].

http://pastebin.com/5WrM3xym

Тагове:
0
Programming Fundamentals
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Задачата се решава най-лесно с масив и LINQ:

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        int[] n = Console.ReadLine().Split().Select(int.Parse).ToArray();
        double average = n.Average();
        int[] result = n.Where(x => x > average).OrderByDescending(x => x).Take(5).ToArray();
        if (result.Length == 0)
            Console.WriteLine("No");
        else
            Console.WriteLine(string.Join(" ", result));
    }
}

Ще обясня кое какво прави:

1. int[] n = Console.ReadLine().Split().Select(int.Parse).ToArray(); - прочита текст от конзолата, Split го разделя (използва интервал ' ' за разделител), Select(int.Parse) прилага int.Parse върху всеки елемент, а накрая ToArray() го прави в масив (в случая от int).

2. double average = n.Average(); - връща средноаритметично на всички елементи (записваме ги в double, защото може да не е цяло число)

3. int[] result = n.Where(x=>x>average).OrderByDescending(x=>x).Take(5).ToArray(); - тук се използват Where(), който съдържа в себе си условие. В нашия случай: x => x>average означава, че искаме да вземем всяка променлива x от масива, ако тя е по-голяма от average. OrderByDescending() подрежда елементите в низходящ ред. Take(5) взима 5 елемента (ако елементите в масива са по-малко от 5, ще вземе всички, без да дава грешка). ToArray() отново ги превръща в масив от int.

4. С if-else проверяваме дали съществуват елементи в масива и ако да ги отпечатва със String.Join

Надявам се това да е помогнало. Ако имаш въпроси - ще се радвам да отговоря.

Успех!

0
Losko avatar Losko 69 Точки

Ще разгледам това което си обяснил, но аз искам да разбера къде греша в кода си а и тези неща които описваш на 3-та лекция не сме ги и сънували. :)

0
damyan91 avatar damyan91 91 Точки

Здравейте, 

при мен проблемът е същият! Дава ми 90/100 и гърми на тест №8 и не мога да разбера защо. Ще съм благодарен ако някой удари едно рамо! Ето го и кода: 

http://pastebin.com/kbekbfAF

0
20/08/2016 11:41:54
AlucardDracula avatar AlucardDracula 416 Точки

ще ви покажа 2 кода дето дават по 90/100 

първия дава грешка в Тест №1 : ПЪРВИ КОД

втория дава грешка в Тест №8 : ВТОРИ КОД

Грешката е : повечето + аз не сме внимавали в условието, а то гласи : Print “No” if no numbers hold the above property.

а сме тръгнали да пишем <= 1 което е грешно :)

въпреки че има решения тука аз поствам и моя : ЛИНК

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.