Професионална програма
Loading...
+ Нов въпрос
ItsoDimitrov avatar ItsoDimitrov 28 Точки

Match Tickets - Programming Basics 17 July 2016 - (Грешка по време на изпълнение)

Здравейте ! 

Решавах задачата "Match Tickets " , пуснах я в Джъдж и ми даде 90 / 100т . В детайлите на тест Тест №4  ми пише  "Грешка по време на изпълнение " , което не разбирам от къде идва  . Ако някой има някаква идея, защо ми дава тази грешка, нека пише  :) 

Условието в джъдж - https://judge.softuni.bg/Contests/Practice/Index/233#2 . 
Линк към кода - http://pastebin.com/fr02MhGv . 

М/у другото, ако някой е решавал задачата нека прати своето решение тук. Вижда се , че моето решение е малко дългичко, ще ми е интересно какво сте писали вие : ) 

Тагове:
0
Programming Basics
ZornitsaSerbezova avatar ZornitsaSerbezova 455 Точки

И моето не е много кратко, но имам 100/100

http://pastebin.com/L28frnWv

Ох, чак сега видях твоето.... Сега разбирам на кое викаш дълго. Моето си е нормално

 

Ужас... основната ти if проверка трябва да е за VIP или Normal... А цената на траспорта можеш да си я изчислиш отделно, защото тя няма общо с другата проверка. Няма смисъл да го изчисляваш много пъти. Винаги избягвай повторението на код. Започни отначало.

0
27/07/2016 16:53:47
TanyaZheleva avatar TanyaZheleva 354 Точки

Имаш прекалено много код, който се повтаря. Като проверяваш от колко човека е групата използвай >=. Също така има вариант в който парите за билети и тези, които има да са равни.

Решение: http://pastebin.com/dAhwUhjb

0
ItsoDimitrov avatar ItsoDimitrov 28 Точки

Главната причина поради която ми дава 90 т. е че кода е много дълъг ? Хм, странно . Ще се пробвам да го скъся тогава. 

Благодаря за отговорите : )

1
Tanina80 avatar Tanina80 11 Точки

Според мен нещо не ти е наред с тези проверки:

        if (peopleInGroup <= 1 || peopleInGroup <= 4)

Би трябвало да са нещо от сорта: 

        if (peopleInGroup >= 1 && peopleInGroup < 5)

        if (peopleInGroup >= 5 && peopleInGroup < 10)

        if (peopleInGroup >= 10 && peopleInGroup < 25)...

 

Това е кода ми, но съм направила точно тези проверки наобратно, от по-големия брой хора в групата, към по-малкия: http://pastebin.com/VsRx8vQ4

1
27/07/2016 20:44:02
AleksanderKostadinov avatar AleksanderKostadinov 12 Точки

Съгласен съм с Tanina80. И на мен веднъж ми даде подобна грешка. Проблемът беше, че зададох да проверява в if дали една променлива е по-голяма от дадено число "или" да е по-голямо от друго число, но не знам каква е логиката на грешката. Някой да има идея? 

0
NinaK avatar NinaK 21 Точки

Здравейте,

Идеята е, че когато се ползва "И" - &&, тогава се прави проверка и двата операнда дали са със стойност True. Ако и двата отговарят на условието се изпълнява тялото, ако не се прескача проверката.

Когато се ползва "ИЛИ" - ||, тогава е достатъчно само единия операнд да е със стойност True и да приеме целия израз за верен.

Поздрави на всички.

 

1
Miroslav_Kisov avatar Miroslav_Kisov 60 Точки

Ето решение https://pastebin.com/ZKbt8uZ3 При по стара версия на Visual Studio може да даде грешка заради символа ' $ ' в Console.WriteLine(); , в такъв случай използвайте стария начин за плейсхолдване.

0
milentertimend avatar milentertimend 25 Точки

Тази задача не налага използването на по-сложни логически проверки като && и ||. Видях го във всички цитирани по-горе кодове. Не искам да обиждам колегата Miroslav_Kisov, но почти 200 реда код за тази задача са убийствено много. Няма нужда да си усложнявате кода (живота)  допълнително. 

0
26/07/2017 18:22:35
boyanm avatar boyanm 0 Точки

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

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

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

            double budget = double.Parse(Console.ReadLine());
            string category = Console.ReadLine();
            int people = int.Parse(Console.ReadLine());
            var transportPrice = 0.0;
            var VIP = 499.99;
            var Normal = 249.99;          
            
            if (people >= 1 && people <= 4)
            {
                transportPrice = budget * 0.75;
            }
            else if (people >= 5 && people <= 9)
            {
                transportPrice = budget * 0.6;
            }
            else if (people >= 10 && people <= 24)
            {
                transportPrice = budget * 0.5;
            }
            else if (people >= 25 && people <= 49)
            {
                transportPrice = budget * 0.4;
            }
            else if (people >= 50)
            {
                transportPrice = budget * 0.25;
            }

            var moneyForTickets = 0.0;
            double moneyLeft = budget - transportPrice;
            if (category=="VIP")
            {
                moneyForTickets = people * 499.99;
            }
            else if(category=="Normal")
            {
                moneyForTickets = people * 249.99;
            }
          
            double left = Math.Abs(moneyLeft - moneyForTickets);

            if (moneyForTickets <= moneyLeft)
            {
                Console.WriteLine($"Yes! You have {left:F2} leva left.");
            }
            else
            {
                Console.WriteLine($"Not enough money! You need {left:F2} leva.");
            }           
        }
    }
}

0
16/08/2017 12:06:51
paveliliev90 avatar paveliliev90 74 Точки

Оставям още едно решение за следващите поколения :D

https://pastebin.com/WFX7Mq6X

0
diana_mv avatar diana_mv 1 Точки

Моето решение е: https://pastebin.com/X0pveF3w

0
Dimitar46 avatar Dimitar46 1 Точки

Грешката е че правиш променлива double ,а в същото време я четеш от конзолата като инт :).И на мен ми даваше тази грешка,решавах я 2 часа тая задача,за да видя къде е грешката ,най-накрая реших да проверя и тук и си я открих сам :).Поздрави!

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