Софтуерно Инженерство
Loading...
+ Нов въпрос
krum_43 avatar krum_43 16 Точки

Проблем при една изпитна задача от tech-a with C#-Snooballs

Условието може да се види от линка :

https://softuni.bg/trainings/resources/officedocument/32247/exercise-problem-descriptions-group-2-programming-fundamentals-may-2018/1939

Написах някакьв код ,който общо взето решава задачата,но не мога да мина един от тестовете(90/100).

Какъв е този 5-ти тест и защо judja ми дава грешен отговор?

Ето и кода :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Snowbolls
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = int.Parse(Console.ReadLine());
            List<double> SnowballsValues = new List<double>();
            List<int> SnowballsSnow = new List<int>();
            List<int> SnowballsTime = new List<int>();
            List<int> SnowballsQuality = new List<int>();
            int index = 0;
            double maxValue = double.MinValue;
            for (int i = 0; i <number; i++)
            {
                int snowballSnow = int.Parse(Console.ReadLine());
                int snowballTime = int.Parse(Console.ReadLine());
                int snowballQuality = int.Parse(Console.ReadLine());
                double snowballValue = Math.Pow((snowballSnow / snowballTime), snowballQuality);
                SnowballsSnow.Add(snowballSnow);
                SnowballsTime.Add(snowballTime);
                SnowballsQuality.Add(snowballQuality);
                SnowballsValues.Add(snowballValue);
            }
            for (int i = 0; i <SnowballsValues.Count; i++)
            {
                if (SnowballsValues[i]>=maxValue)
                {
                    maxValue = SnowballsValues[i];
                    index = i;
                }
            }
            Console.WriteLine($"{SnowballsSnow[index]} : {SnowballsTime[index]} = {SnowballsValues[index]} ({SnowballsQuality[index]})");
        }
    }
}
 

Тагове:
krum_43 avatar krum_43 16 Точки

Да,мерси за коментара.

 

0
icowwww avatar icowwww 946 Точки

Като се замислиш и листове не ти трябват. Не виждам причина да пазиш всичките стойности, а не само тези отнасящи се за най-голямата стойност на SnowballValue 

Втория цикъл е също излишен може да вкараш проверката още в първия и ако условието е вярно само тогава да записваш стойностите на snow, time, quality в отделни променливи, а не в листове,

тук намерих едно такова 

using System;
using System.Numerics;

namespace Snowballs
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = int.Parse(Console.ReadLine());
            BigInteger maxValue = -1;
            string result = string.Empty;
            for (int i = 0; i < number ; i++)
            {
                int snow = int.Parse(Console.ReadLine());
                int time = int.Parse(Console.ReadLine());
                int quality = int.Parse(Console.ReadLine());
                BigInteger value = BigInteger.Pow((snow / time), quality);
                if (value > maxValue)
                {
                    result = String.Format("{0} : {1} = {2} ({3})", snow, time, value, quality);
                    maxValue = value;
                }
            }
            Console.WriteLine(result);
        }
    }
}

 

1
10/01/2019 10:04:32
krum_43 avatar krum_43 16 Точки

Мерси за коментара.Явно тук трябва да се използва BigInteger, но странно защо Visual Studio 2019 ми дава ,че не поддържа библиотеката System.Numerics.

0