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

[Homework] C# fundamentals - Exercise Data types and variables - Задача 9 - Spice must flow

Здравейте имам въпрос свързан със задачата. Защо в judge следният код дава 50/100: https://pastebin.com/ZYHgwqG2

Но ако вместо това направя проверка в цикъла и там поставя кода по този начин: https://pastebin.com/rcWF9B0G 

Judge ми дава 100/100 ? Това което ме обърква, е че и в двата случая кодът ще се изпълни само когато while цикъла приключва , в единият случай ще е в края на завъртането, а в другият ще е след като цикълът е приключил напълно, но  и в двата случая това парче код за което става дума ще се изпълни чак когато всички други изчисления са направени. През моята гледна точка ми се струва, че би трябвало да е едно и също, но според judge явно не е , та може ли някой да ми обясни защо ? Така или иначе цикълът винаги ще спре тогава когато паднем под 100 добив на ден, защо изобщо ни е нужна проверка дали сме паднали под 100 в този случай и още по странното ми е защо без тази проверка не работи ако така или иначе ще се стигне до въпросното парче код ?

 

*отговориха ми: Ако има начална стойност по - малка от 100 ще имаме отрицателен gathered, а в случайа с проверката ще си имаме просто 0 * 

Тагове:
0
C# Fundamentals 25/09/2021 15:27:40
Axiomatik avatar Axiomatik 1491 Точки

First code does not pass all tests since there is no validation for total amount to drop below 0 spice collected.

            if (totalGathered < 0)
            {
                totalGathered = 0;
            }

 

When using any number below 26 this will result in a negative result in the final output, which is not a problem in the second solution because the final 26 spices get only subtracted inside of the while loop. 

Add the above validation to your first solution to fix the problem:

using System;
 
namespace SecondApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int startingYield = int.Parse(Console.ReadLine());
            int days = 0;
            int totalGathered = 0;
            while (startingYield >= 100)
            {
                days++;
                totalGathered += startingYield - 26;
                startingYield -= 10;              
            }
            totalGathered -= 26;
            if (totalGathered < 0)
            {
                totalGathered = 0;
            }
            Console.WriteLine($"{days}");
            Console.WriteLine($"{totalGathered}");
        }
    }
}

 

0