Loading...
georgiblazhev avatar georgiblazhev 3 Точки

Cinema Tickets - Exam

Добър вечер,

 

Пиша ви с огромна молба. :D

 

От два дена я мъча тази красивата задача и точно когато я подкарах да върви на нулевите тестове, тя не мина нито едно условие в Judge (0/100).

 

Това е кодът: https://pastebin.com/Ae9UKRPH

 

Моля, асистирайте.

0
Programming Basics
kkaraivanov avatar kkaraivanov 486 Точки
Best Answer

Заповядай :), надявам се ще откриеш грешката в кода си,която ти прави проблем.

using System;

namespace CinemaTickets
{
    class Program
    {
        static void Main(string[] args)
        {
            string command = "";
            int totalStudent = 0;
            int totalStandard = 0;
            int totalKid = 0;
            int totalTiket = 0;
            while (command != "Finish")
            {
                command = Console.ReadLine();
                int student = 0;
                int standard = 0;
                int kid = 0;
                if (command == "Finish")
                {
                    break;
                }
                int freePosition = int.Parse(Console.ReadLine());
                for (int i = 0; i < freePosition; i++)
                {
                    string curentPosition = Console.ReadLine();
                    if (curentPosition == "student")
                    {
                        student++;
                    }
                    else if (curentPosition == "standard")
                    {
                        standard++;
                    }
                    else if (curentPosition == "kid")
                    {
                        kid++;
                    }
                    else if (curentPosition == "End")
                    {
                        break;
                    }
                }
                totalStudent += student;
                totalStandard += standard;
                totalKid += kid;
                Console.WriteLine($"{command} - {((student + standard + kid) / (double)freePosition) * 100:f2}% full.");
            }
            totalTiket = totalStudent + totalStandard + totalKid;
            Console.WriteLine($"Total tickets: {totalTiket}");
            Console.WriteLine($"{(totalStudent / (double)totalTiket) * 100:f2}% student tickets.");
            Console.WriteLine($"{(totalStandard / (double)totalTiket) * 100:f2}% standard tickets.");
            Console.WriteLine($"{(totalKid / (double)totalTiket) * 100:f2}% kids tickets.");
        }
    }
}

 

1
24/10/2019 21:04:10
georgiblazhev avatar georgiblazhev 3 Точки

Здравейте,

Благодаря за отговора Ви!

 

Грешката в опита ми да направя задачата с два while цикъла и ограничението за билетите да е в отделен if ли се състои?

 

Редактирах кода ми спрямо това, което сте ми пратили и стана на 100%.

 

0
kkaraivanov avatar kkaraivanov 486 Точки

Ами дали ще е While или For цикъл в случая няма значение стига да приключи в определения момент от условието. Имаш няколко Double променливи, а върнатата стойност на конзолата е различна от тази на Int. Друг проблем който забелязах в Judg е че символ на кирилица като "- или , или . или кавички", винаги връщат 0/100. Провери какви символи имаш във Console.WriteLine(), може да нямаш грешка в логиката и кода.

0
kkaraivanov avatar kkaraivanov 486 Точки

Ето и още една грешка която открих -

Console.WriteLine($"{(studentTickets / totalTickets * 100):F2}% student tickets.");
Console.WriteLine($"{(standardTickets / totalTickets * 100):F2}% standard tickets.");
Console.WriteLine($"{(kidsTickets / totalTickets * 100):F2}% kids tickets.");

При изчисляване на където ще ти се върне стойност реално число, трябва да парснеш една от променливите за да не ти връща стойност "00" след десетичната запетая. Кода би трябвало да бъде ето така -

Console.WriteLine($"{(studentTickets / (double)totalTickets * 100):F2}% student tickets.");
Console.WriteLine($"{(standardTickets / (double)totalTickets * 100):F2}% standard tickets.");
Console.WriteLine($"{(kidsTickets / (double)totalTickets * 100):F2}% kids tickets.");

 

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