Професионална програма
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