Loading...
psp87 avatar psp87 1 Точки

Задача 06. Baking Competition от изпита на 27/28 юли

Здравейте колеги,

Ще съм благодарен ако ми кажете къде греша на тази задача, че ме измъчи :) Работи нормално, но дава само 20 точки и не мога да намеря защо. Нещо в това да е цяло положително число бъркам, но пак не разбирам защо - използвам Math.Abs. Ето и условието:

По време на почивката на семейството на Ани се организирало благотворително състезание по готварство и майката на Ани се записала за участие. Всеки един от участниците избирал колко и кои от възможните сладкиши да направи, а те били следните - сладки, торти и гофрети. След като се изпекат, сладкишите се продават на следните цени за брой: сладки - 1,50, торти - 7,80, гофрети - 2,30,  а събраната сума се дарява за благотворителност.

Напишете програма, която проследява колко и кои сладкиши е изпекъл всеки един от участниците, колко е общият брой на продадените сладкиши и колко е събраната сума за благотворителност.

Вход

От конзолата се четат следните редове:

  • Първи ред – брой участници в състезанието – цяло положително число в интервала [1…10]

За всеки един от участниците се четат следните редове до прочитане на командата "Stop baking!":

  • Първи ред – име на участник - текст

  • Втори ред – вид сладкиш - текст с възможности: "cookies", "cakes", "waffles"

  • Трети ред – брой изпечени сладкиши от дадения вид - цяло число в интервала [1…1000]

Изход

За всеки един от участниците се отпечатва по един ред:

  • "{име на съответния участник} baked {брой изпечени сладки} cookies, {брой изпечени торти} cakes and {брой изпечени гофрети} waffles."

Накрая да се отпечатат два реда, съдържащи съответно общия брой на изпечените сладкиши и събраната сума за благотворителност, форматирани по следния начин:

  • "All bakery sold: {брой сладкиши}"

  • "Total sum for charity: {сума за благотворителност} lv."

Сумата да бъде форматирана до втората цифра след десетичния знак.

 

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

using System;

namespace Exam6
{
    class Program
    {
        static void Main(string[] args)
        {
            int count = Math.Abs(int.Parse(Console.ReadLine()));

            int totalCount = 0;
            double totalSum = 0;

            double priceCookies = 1.50;
            double priceCakes = 7.80;
            double priceWaffles = 2.30;

            int totalCountCookies = 0;
            int totalCountCakes = 0;
            int totalCountWaffles = 0;

            for (int i = 1; i <= count; i++)
            {
                int countCookies = 0;
                int countCakes = 0;
                int countWaffles = 0;

                string name = Console.ReadLine();
                string typeMeal = Console.ReadLine();

                while (typeMeal != "Stop baking!")
                {
                    int countMeal = int.Parse(Console.ReadLine());

                    if (typeMeal == "cookies")
                    {
                        countCookies = countMeal;
                        totalCountCookies += countCookies;
                    }

                    else if (typeMeal == "cakes")
                    {
                        countCakes = countMeal;
                        totalCountCakes += countCakes;
                    }

                    else
                    {
                        countWaffles = countMeal;
                        totalCountWaffles += countWaffles;
                    }

                    typeMeal = Console.ReadLine();
                }

                Console.WriteLine($"{name} baked {countCookies} cookies, {countCakes} cakes and {countWaffles} waffles.");
            }

            totalCount = totalCountCookies + totalCountCakes + totalCountWaffles;
            totalSum = (totalCountCookies * priceCookies) + (totalCountCakes * priceCakes) + (totalCountWaffles * priceWaffles);

            Console.WriteLine($"All bakery sold: {totalCount}");
            Console.WriteLine($"Total sum for charity: {totalSum:F2} lv.");
        }
    }
}

 

0
Programming Basics with C# 29/07/2019 19:12:25
doani avatar doani 21 Точки

Ето едно решение -

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

namespace new06
{
    class Program
    {
        static void Main(string[] args)
        {

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

            int countCookies = 0;
            int countCakes = 0;
            int countWaffles = 0;

            int countersweetsAll = 0;

            double sum = 0;
            double sumEnd = 0;

            for (int i = 1; i <= countOfPeople; i++)
            {
                 countCookies = 0;
                 countCakes = 0;
                 countWaffles = 0;


                string name = Console.ReadLine();
                string command = Console.ReadLine(); // "cookies" , "cakes" , "waffles"

                while (command != "Stop baking!")
                {
                    string sweetName = command;

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

                    countersweetsAll += countOfSweets;

                    if (sweetName == "cookies")
                    {
                        countCookies += countOfSweets;
                        sum = countOfSweets * 1.50;
                    }
                    else if (sweetName == "cakes")
                    {
                        countCakes += countOfSweets;
                        sum = countOfSweets * 7.80;

                    }
                    else if (sweetName == "waffles")
                    {
                        countWaffles += countOfSweets;
                        sum = countOfSweets * 2.30;
                    }

                    sumEnd += sum;
                    sum = 0;

                    command = Console.ReadLine(); // "cookies" , "cakes" , "waffles"
                }
                if (command == "Stop baking!")
                {
                    Console.WriteLine($"{name} baked {countCookies} cookies, {countCakes} cakes and {countWaffles} waffles.");
                }
            }

            Console.WriteLine($"All bakery sold: {countersweetsAll}");
            Console.WriteLine($"Total sum for charity: {sumEnd:F2} lv.");

        }
    }
}

 

0
mark79 avatar mark79 639 Точки

Здравей,

ето необходимите корекции, а и лек refactoring по кода ти.

Поздрави :)

0
29/07/2019 19:57:44
psp87 avatar psp87 1 Точки

Здравейте, тъкмо видях че качват и решенията на задачите от изпита. Доста се изненадах че се чупи заради изчислението на totalCount и totalSum извън for цикъла :). Като се вкарат в цикъла и дава 100/100. Даже няма значение дали слагаш Math.Abs или не :) Благодаря за бързите отговори и успех напред :)

0
mark79 avatar mark79 639 Точки

Успех и на теб .. само като съвет - чети внимателно условията и имай предвид какво ти дават като допустими стойности на входните данни.

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