Loading...
Deni95 avatar Deni95 2 Точки

Изпит по "Основи на програмирането" 6 и 7 юли 2019 Задача 5. Магазин за компютърни игри

Здравейте колеги , може ли решение на задачата: Започнах с това решение, но очевадно изобщо не се решава така:

Условие:

Магазин за компютърни игри ви наема за да направите статистика на процента продажби на игрите от последния месец, като изчислите по колко процента от общите продажби са за някоя от игрите.

Процентите трябва да бъдат разделени на четири части, три заглавия на игри и всички останали :

1.Hearthstone

2.Fornite

3.Overwatch

4.Others

Вход

От конзолата се четат:

  • Брой продадени игри- n - цяло положително число в интервала [1… 100]

За следващите n реда се чете по един ред:

  • на игра - текст

Изход

На конзолата да се изпишат четири реда:

                "Hearthstone - {процент продажби на Hearthstone}%"

      "Fornite - {процент продажби на Fornite}%"

      "Overwatch - {процент продажби на Overwatch}%"

      "Others - {процент продажби на всички останали игри}%"

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

Примерен вход и изход

Вход

Изход

Обяснения

4

Hearthstone

Fornite

Overwatch

Counter-Strike

Hearthstone - 25.00%

Fornite - 25.00%

Overwatch - 25.00%

Others - 25.00%

Продадени са  4 игри.

По една игра Hearthstone, Fornite и Overwatch, които принадлежат към съответните им категории,

както и една игра Counter-Strike, която спада към допълнителната категория.

 

3

Hearthstone

Diablo 2

Star Craft 2

Hearthstone - 33.33%

Fornite - 0.00%

Overwatch - 0.00%

Others - 66.67%

Продадени са 3 игри.

Една игра от категорията Hearthstone. Както и 2 игри Diablo 2 и Star Craft 2

 

Код:

using System;

namespace _05._PC_Game_Shop
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            double percent = 100 / n;
         
            for (int i = 0; i < n; i++)
            {
                string game = Console.ReadLine();
               
                if (game == "Hearthstone")
                {
                    double percent1 = percent / 3;
                    if (game != "Hearthstone")
                    {
                        percent = 0.00;
                    }
                }
                else if (game == "Fornite")
                {
                    double percent2 = percent / 3;
                    if (game != "Fornite")
                    {
                        percent = 0.00;
                    }                 
                }
                else if (game == "Overwatch")
                {
                    double percent3 = percent / 3;
                    if (game != "Overwatch")
                    {
                        percent = 0.00;
                    }
                }             

                if (game != "Hearthstone" && game != "Fornite" && game != "Overwatch")
                {
                    double percentOther = 100 - percent;      
                }
            }

            Console.WriteLine($"Hearthstone - {percent}%");
            Console.WriteLine($"Fornite - {percent}%");
            Console.WriteLine($"Overwatch - {percent}%");
            Console.WriteLine($"Others - {percent}%");
        }
    }
}

 

Благодаря Предварително !

Тагове:
0
Programming Basics
plamenpik avatar plamenpik 31 Точки

В началото много добре си се сетил да сметнеш колно е процента за броят игри които са продадени със 

double percent = 100 / n;

Просто е трябвало да направиш 4 променливи за 3-те известни игри и всики останали примерно 

double hearthstonePercentage = 0.0;

и във всяка итерация на цикъла след проверка коя е играта да добавяш процента към отделните променливи. А във твоят фор цикълк съсвсем си се оплел първо проверяваш дали играта е хартстоун съсздаваш променлива

double percent1 = percent / 3;

която никъде не ползваш после проверяваш дали играта не е хартстоун което винаги е false и зануляваш процентите, накраят смяташ процентите за останалите игри което пак никъде не посзваш

double percentOther = 100 - percent;

и принтираш процента който смяташ в началото който дава правилен резултат при прървият нулев тест ако форматираш да се принтират два знака след десетичната запетая по този начин

Console.WriteLine($"Hearthstone - {percent:F2}%");

Изтрий всичко почни от начало и смятам че ще я решеш.

0
Deni95 avatar Deni95 2 Точки

Много благодаря за съветите получи се :))

0
plamenpik avatar plamenpik 31 Точки

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

using System;

class Program
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        double hearthstonePercentage = 0.0;
        double fornitePercentage = 0.0;
        double overwatchPercentage = 0.0;
        double otherPercentage = 0.0;
        double percent = 100.0 / n;

        for (int i = 0; i < n; i++)
        {
            string game = Console.ReadLine().ToLower();

            switch (game)
            {
                case "hearthstone":
                    hearthstonePercentage += percent;
                    break;
                case "fornite":
                    fornitePercentage += percent;
                    break;
                case "overwatch":
                    overwatchPercentage += percent;
                    break;
                default:
                    otherPercentage += percent;
                    break;
            }
        }

        Console.WriteLine($"Hearthstone - {hearthstonePercentage:F2}%");
        Console.WriteLine($"Fornite - {fornitePercentage:F2}%");
        Console.WriteLine($"Overwatch - {overwatchPercentage:F2}%");
        Console.WriteLine($"Others - {otherPercentage:F2}%");
    }
}

 

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