Професионална програма
Loading...
rossyruseva avatar rossyruseva 1 Точки

C# Fundamentals - Exercise: Intro and Basic Syntax: 07. Vending Machine

Колеги, ако може малко помощ. Доколкото си спомням не съм писала нещо подобно в кода(пробвах се да кача скрийншот, но нещо не ми се получава) :

Your output:

Cannot accept 0.11
Cannot accept 0.11
Invalid product
Purchased beer
Change: 0.00
 

Expected output:

Cannot accept 0.11
Cannot accept 0.11
Invalid product
Change: 0.00

А това е кодът:

https://pastebin.com/EG6L730N

0
Fundamentals Module
Axiomatik avatar Axiomatik 1354 Точки

Practise-session is not available in judge, but these sort of vending machines exercises always require decimal instead of double numbers to work correctly. Also, better to use ToLower() on all input data for the second part of the exercise in order not to miss out on a valid product that is spelled COke or sodA.

You also need to include a validation whether you purchase an invalid product (line 64-75), otherwise output will be “Invalid product” and “Purchased ...“ when entering a product that is not on the product-list. This is why “beer” produced a wrong output.

Best,

New code:

using System;

namespace VendingMachine
{
    class Program
    {
        static void Main(string[] args)
        {
            string coins = Console.ReadLine();

            decimal totalSum = 0m;

            while (coins != "Start")
            {
                decimal currentAmount = decimal.Parse(coins);

                if (currentAmount != 0.1m
                    && currentAmount != 0.2m
                    && currentAmount != 0.5m
                    && currentAmount != 1m
                    && currentAmount != 2m)
                {
                    Console.WriteLine($"Cannot accept {currentAmount}");
                }
                else
                {
                    totalSum += currentAmount;
                }

                coins = Console.ReadLine();
            }

            string input = Console.ReadLine().ToLower();

            while (input != "end")
            {

                decimal currentPrice = 0;
                bool invalidProduct = false;

                switch (input)
                {
                    case "nuts":
                        currentPrice = 2.0m;
                        break;
                    case "water":
                        currentPrice = 0.7m;
                        break;
                    case "crisps":
                        currentPrice = 1.5m;
                        break;
                    case "soda":
                        currentPrice = 0.8m;
                        break;
                    case "coke":
                        currentPrice = 1.0m;
                        break;
                    default:
                        Console.WriteLine("Invalid product");
                        invalidProduct = true;
                        break;
                }

                if (invalidProduct == false)
                {
                    if (totalSum >= currentPrice)
                    {
                        totalSum -= currentPrice;
                        Console.WriteLine($"Purchased {input.ToLower()}");
                    }
                    else
                    {
                        Console.WriteLine("Sorry, not enough money");
                    }
                }

                input = Console.ReadLine().ToLower();
            }

            Console.WriteLine($"Change: {totalSum:f2}");
        }
    }
}

0
rossyruseva avatar rossyruseva 1 Точки

Thank you! :)

0