Loading...
darkata405 avatar darkata405 6 Точки

Input string was not in a correct format.

Здравейте, знам, че грешката ми е в while цикъла, но не мога да разбера защо. Винаги съм се затруднявал с подредбата на поставянето на четенето на вход преди и след while цикъла. Много ще се радвам ако някой успее да ми обясни. Благодаря !!!

условието на задачата : https://softuni.bg/downloads/svn/programming-basics-v4/course-directories/september-2019/2019-06/Exam/06.%20Baking%20Competition.docx
 

!!! Ще си позволя да поставя кода тук, защото pastebin не работи както трябва последните няколко дни !!!
 

using System;

namespace ExamPreparation
{
    class Program
    {

        static void Main(string[] args)
        {
            int numberOfCompetitors = int.Parse(Console.ReadLine());
            double cookies = 1.50;
            double cakes = 7.80;
            double waffles = 2.30;

            double bakedCookies = 0;
            double bakedCakes = 0;
            double bakedWaffles = 0;

            string nameOfCompetitor = String.Empty;
            string typeOfDesert = String.Empty;
            int numberOfBakedDeserts = 0;
            string input = string.Empty;

            int bakedDesertsCounter = 0;
            double price = 0;
            double priceSum = 0;

            for (int i = 0; i < numberOfCompetitors; i++)
            {

                nameOfCompetitor = Console.ReadLine();

                while (nameOfCompetitor != "Stop baking!")

                {

                    input = nameOfCompetitor;
                    typeOfDesert = Console.ReadLine();
                    numberOfBakedDeserts = int.Parse(Console.ReadLine());

                    switch (typeOfDesert)
                    {
                        case "cookies":
                            bakedCookies = numberOfBakedDeserts;
                            price = cookies * numberOfBakedDeserts;
                            break;

                        case "cakes":
                            bakedCakes = numberOfBakedDeserts;
                            price = cakes * numberOfBakedDeserts;
                            break;

                        case "waffles":
                            bakedWaffles = numberOfBakedDeserts;
                            price = waffles * numberOfBakedDeserts;
                            break;
                    }

                    nameOfCompetitor = Console.ReadLine();
                }

                Console.WriteLine($"{nameOfCompetitor} baked {bakedCookies} cookies, {bakedCakes} cakes and {bakedWaffles} waffles.");
                bakedDesertsCounter += numberOfBakedDeserts;
                numberOfBakedDeserts = 0;
                priceSum += price;
            }

            Console.WriteLine($"All bakery sold: {bakedDesertsCounter}");
            Console.WriteLine($"Total sum for charity: {priceSum} lv.");
        }
    }
}

Тагове:
0
Programming Basics 21/12/2019 18:35:02
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

имаш няколко сериозни проблема в кода.

първо не си разбрал условието второ не четеш правилно input-a  в while цикъла затова беше прав.

написал съм ти коментари на грешките.,и да много тъпо че pastbin-a пак нещо е умрял.

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int numberOfCompetitors = int.Parse(Console.ReadLine());
            double cookies = 1.50;
            double cakes = 7.80;
            double waffles = 2.30;

            double bakedCookies = 0;
            double bakedCakes = 0;
            double bakedWaffles = 0;


            int numberOfBakedDeserts = 0;

            int bakedDesertsCounter = 0;
            double price = 0;
            double priceSum = 0;

            for (int i = 0; i < numberOfCompetitors; i++)
            {

               // подават ти името един път не проверяваш по него а по десертите. това беше първата ти грешка

                string nameOfCompetitor = Console.ReadLine();

                   
                string typeOfDesert;
                while ((typeOfDesert = Console.ReadLine()) != "Stop baking!")
                {

                    numberOfBakedDeserts = int.Parse(Console.ReadLine());

                    switch (typeOfDesert)
                    {
                        case "cookies":
                            bakedCookies = numberOfBakedDeserts;
                            price += cookies * numberOfBakedDeserts;
                            break;

                        case "cakes":
                            bakedCakes = numberOfBakedDeserts;

                           // тук всеки път в всеки суитч презаписваш сумата си не я събираш така че ако ти продам  

                          //  cookies преди това или waffles ще ги презапишеш и винаги ще имаш само последната сума а не сбора
                            price += cakes * numberOfBakedDeserts;
                            break;

                        case "waffles":
                            bakedWaffles = numberOfBakedDeserts;
                            price += waffles * numberOfBakedDeserts;
                            break;
                    }

                }

                Console.WriteLine($"{nameOfCompetitor} baked {bakedCookies} cookies, {bakedCakes} cakes and {bakedWaffles} waffles.");
                bakedDesertsCounter += numberOfBakedDeserts;
                numberOfBakedDeserts = 0;
                priceSum += price;

               // тук имаш обратния проблем не нулираше сумата ако първия е продал за 30 лева после трябва да почнеш от 0 а ти                   // ще почнеш от 30
                price = 0;
            }

            Console.WriteLine($"All bakery sold: {bakedDesertsCounter}");
// а тук не връщаше до втория знак както се иска по условие            

Console.WriteLine($"Total sum for charity: {priceSum:f2} lv.");
        }
    }
}
 

0
darkata405 avatar darkata405 6 Точки

Здрасти, Колега. Много ти благодаря за изчерпателния отговор :))) !!!

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

не съм го тествал в judge но поне по условието това видях като очевадни грешки, и вадеше правилно примерите. но дали 100/100 не знам

а и аз бих ползвал новия switch много по - елегантен е.Но не знам дали judge подържа с#8 и на коя версия ви  показват нещата.

0
24/12/2019 21:01:38
darkata405 avatar darkata405 6 Точки

Оправих го още преди няколко дни, всичко е точно :))). Благодаря ти 😎😎😎 !

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