понеделник, 24 юни 2013 г.

C# програмиране - част I - Problem 1 – Coffee Vending Machine - Изпит на 23.06.2013

Задача 1
Задача 2
Задача 3
Задача 4
Задача 5

Здравейте,
Желая да споделя личното си впечатление от задачите на изпита. Ето и първата от тях.

Условието на задачата може да изтеглите от тук: 1. Coffee Machine.doc

В началото като прочетох условието и реших че тук ще се наложи да проверявам типа на монетите които имам за рестото и логично ако в машината има единствено монети от 1 лев, машината няма да може да върне ресто от 50 стотинки, поради липса на по-дребни монети.
Затова в началото реших че задачата не е толкова лесна, в последствие видях скорошни решения на задачата със 100 точки оценка и реших че едва ли се иска точно това, оказа се че трябва да се направят прости сметки дали има повече пари в машината от рестото.

Трите случая за отговор на програмата са:

1. Ако дадената сума от клиента е по-голяма или равна на цената, можем да сметнем рестото и ако рестото е по-малко или равно на сумата в машината, тогава може да се върне рестото (тук не е необходимо да се проверяват монетите и дали с тях може да се направи комбинация за да се получи рестото, което описах по-горе).
В този случай отпечатваме Yes, интервал и сумата останала в машината без рестото.

2. Ако дадената сума от клиента е по-малка от цената, тогава отпечатваме More, интервал и разликата от цената и дадената сума.

3. Ако дадената сума от клиента е по-голяма от цената и рестото което трябва да се върне е по-малко от сумата в машината отпечатваме No, интервал и разликата между рестото и сумата в машината.

Ето и моето решение:

using System;

class CoffeeVendingMachine
{
    static void Main()
    {
        int numOfCoins1 = int.Parse(Console.ReadLine());
        int numOfCoins2 = int.Parse(Console.ReadLine());
        int numOfCoins3 = int.Parse(Console.ReadLine());
        int numOfCoins4 = int.Parse(Console.ReadLine());
        int numOfCoins5 = int.Parse(Console.ReadLine());
        double machineTotal = 0.05 * numOfCoins1 + 0.1 * numOfCoins2 + 0.2 * numOfCoins3 + 0.5 * numOfCoins4 + 1.0 * numOfCoins5;
        double amount = double.Parse(Console.ReadLine());
        double price = double.Parse(Console.ReadLine());
        if (price > amount)
        {
            Console.WriteLine("More {0:0.00}", (price - amount));
        }
        else if (machineTotal < amount - price)
        {
            Console.WriteLine("No {0:0.00}", (amount - price - machineTotal));
        }
        else
        {
            Console.WriteLine("Yes {0:0.00}", (machineTotal - amount + price));
        }
    }
}

1 коментар: