Loading...
sylvant avatar sylvant 0 Точки

[Exam Problems] C# Basics- 06.Easter Competition

Задачата ми дава 70/100 резултат в judge

Условие на задачата:

https://softuni.bg/downloads/svn/programming-basics-v4/course-directories/may-2019/2019-03/Exam/06.%20Easter%20Competition.pdf

Кодът ми:

using System;
                    
public class Program
{
    public static void Main()
    {
        
        int n=int.Parse(Console.ReadLine());
        string chef="";
        int maxscore=0;
        
        for (int i=0; i<n;i++)
        {
            string name=Console.ReadLine();
            string score=Console.ReadLine();
            int sum=0;
            
            while (score!="Stop")
            {
                sum+=int.Parse(score);
                score=Console.ReadLine();
            }
            
            maxscore=Math.Max(maxscore, sum);
            Console.WriteLine(name+" has "+sum+" points.");
            
            if (maxscore==sum)
            {
                chef=name;
                Console.WriteLine(name+" is the new number 1!");
            }
        }
        
        Console.WriteLine(chef+" won competition with "+maxscore+" points!");
    }
}

Тагове:
0
Programming Basics with C# 29/03/2020 16:56:13
SvetoslavPetsev avatar SvetoslavPetsev 100 Точки
Best Answer

Привет,

Метода Math.Max(a , b) , сравнява две числа и връща по- голямото. Проблема в конкретната задача се появява когато са равни.

В този случай, последващата Ви логиката -  if (maxscore == sum) , при равни стойности връща True и печатате текущия пекар като фаворит, което противоречи на условието  -> "Ако след командата "Stop", пекарят е с най-много точки до момента, да се отпечата допълнителен ред".

По- удачно е да  изпозвате логиката: ако текущата сума > максималната, отпечатва пекарят фаворит и максималната сума присвоява текущата сума.

Прилагам корекция на кода Ви, даващ 100/100 :

https://pastebin.com/fQuj5JZ3

Успех!

0
sylvant avatar sylvant 0 Точки

Много благодаря. Ако разбирам правилно пропускът на моя код  е че ако има последващ говач с равен резултат с най-големия до момента, то той ще стане фаворит, което се счита за грешно от условието?

0
SvetoslavPetsev avatar SvetoslavPetsev 100 Точки

Точно така!

В условието е написано "най- много "- т.е. повече от всички до момента :). Малко е тънък този момент, но в случаи с проверки си имай едно наум.

Поздрави!

0
Rosen1234 avatar Rosen1234 5 Точки

Здравейте, може ли помощ за задачата,греша при while цикъла където се четат имената и точките едновременно.

Ако може и някой да обясни точно как става така да се чете стринг и число в while цикъл ще съм много благодарен:)

Ето го и кода: https://pastebin.com/nEyYTWDb

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