Професионална програма
Loading...
+ Нов въпрос
AnzhelaNurieva avatar AnzhelaNurieva 4 Точки

03. Numbers Fundamentals-Mid Exam-5 July 2020

80/100 ми дава Judge 

линк към решението =>  https://pastebin.com/Mids17C2

линк към условието => https://judge.softuni.bg/Contests/Practice/Index/2474#2

Нямам представа, защо и къде би могла да бъде грешката, всичко излиза на изхода...?

Моля, ако може някой да погледне :)

Тагове:
0
Fundamentals Module 26/10/2020 18:40:47
Axiomatik avatar Axiomatik 1244 Точки

Hmm, for an exam-exercise this really can be solved in a short way. Lines 24-28 are the key validation where, the input numbers are ordered(OrderByDescending), filtered(Where) and only the top 5 are taken (Take).

Best,

Code(100%):

using System;
using System.Linq;
using System.Collections.Generic;

namespace _03._Numbers
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> sequenceIntegers = Console
                      .ReadLine()
                      .Split()
                      .Select(int.Parse)
                      .ToList();

            List<int> nums = new List<int>();

            //List<int> rezult = new List<int>();

            //int count = 0;
            double averageSum = sequenceIntegers.Average();

            nums = sequenceIntegers
              .OrderByDescending(x => x)
              .Where(num => num > averageSum)
              .Take(5)
              .ToList();

            if (nums.Count <= 0)
            {
                Console.WriteLine("No");
                return;
            }

            Console.WriteLine(string.Join(" ", nums));

            //for (int i = 0; i < sequenceIntegers.Count; i++)
            //{
            //    if (sequenceIntegers[i] > averageSum)
            //    {
            //        rezult.Add(sequenceIntegers[i]);
            //    }

            //}

            //if (rezult.Count <= 0)
            //{
            //    Console.WriteLine("No");
            //    return;
            //}

            //int maxNum = rezult.Max();

            //for (int i = 1; i <= rezult.Count; i++)
            //{
            //    if (rezult[rezult.Count - i] <= maxNum)
            //    {
            //        count++;
            //        nums.Add(rezult[rezult.Count - i]);
            //    }
            //    if (count == 5)
            //    {
            //        break;
            //    }
            //}

            //Console.WriteLine(string.Join(" ", nums.OrderByDescending(x => x)));
        }
    }
}

0
nickwork avatar nickwork 662 Точки

Промених ти малко кода, проблема беше начина по който избираш елементите в последният for ... пускам ти променената част + набързо написах и по кратко решение на тази задача...ако имаш някаква въпроси питай... успех

if (rezult.Count <= 0)
            {
                Console.WriteLine("No");
                return;
            }

            rezult = rezult.OrderByDescending(x => x).ToList();

            for (int i = 0; i < rezult.Count; i++)
            {                
                    count++;
                    nums.Add(rezult[i]);
                
                if (count == 5)
                {
                    break;
                }
            }

..........................................................................................................................................

По кратко решение: 

List<int> sequenceIntegers = Console
                      .ReadLine()
                      .Split()
                      .Select(int.Parse)
                      .ToList();

            var result = sequenceIntegers.Where(x => x > sequenceIntegers.Average()).ToList();

            if (result.Count == 0)
            {
                Console.WriteLine("No");
                return;
            }

            Console.WriteLine(string.Join(" ", result.OrderByDescending(x => x).Take(Math.Min(5, result.Count))));

2
krum_43 avatar krum_43 568 Точки

Здравей колега(nickwork) ,

За пореден път печелиш наградата за най-кратко и интересно решение.

0
27/10/2020 16:14:26