Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Leprikona avatar Leprikona 108 Точки

Problem 1. SoftUni Airline

Здравейте, стигам до тук със задачата и не мога да продължа. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static void Main()
    {
        int flights = int.Parse(Console.ReadLine());
        int Income = 0;
        int Fuel = 0;
        int Overall = 0;
        int Average = 0;
        for (int i = 0; i < flights; i++)
        {
            int Apass = int.Parse(Console.ReadLine());
            int Aprice = int.Parse(Console.ReadLine());
            int Ypass = int.Parse(Console.ReadLine());
            int Yprice = int.Parse(Console.ReadLine());
            int Fprice = int.Parse(Console.ReadLine());
            int Fconsume = int.Parse(Console.ReadLine());
            int Fduration = int.Parse(Console.ReadLine());
            Income = Apass * Aprice + Ypass * Yprice;
            Fuel = Fprice * Fconsume * Fduration;
        }
        if (Income >= Fuel)
        {
            Console.WriteLine("You are ahead with {0:f3}$.", Income - Fuel);
        }
        else
        {
            Console.WriteLine("We've got to sell more tickets! We've lost {0:f3}$.", Income - Fuel);
        }
    }
}

моля за малко помощ. :)

Тагове:
0
Programming Basics
Thenis avatar Thenis 219 Точки

Типовете данни са ти грешни.

Трябва да използваш decimal за някои променливи. Виж Constraints в условието

  •  The adult and youth ticket price will be floating-point numbers in range [1…1,000,000,000.00].
  • The adult and youth passengers count will be integers in range [0…1,000,000,000].
  • The fuel price will be floating-point number in range [1…1,000,000.00].

т.з. за цените на горивото и билетите трябва да използваш decimal, а за броя на пътниците int.

Също така този if-else трябва да ти е вътре в for цикала

0
11/06/2016 19:30:42
rado84 avatar rado84 1 Точки

И аз се опитах да я реша тази задача, въпреки че се води към следващия курс, но още на първия вход ми вади съвсем различен изход от това, което трябва да е и я оставих висяща. По условие първият изход трябва да е $5000, а ми изкарва $664 на минус.

http://pastebin.com/hQm137ig

P.S. И с double, и с decimal все един и същ минусов резултат вади.

0
Maria_ls avatar Maria_ls 383 Точки

3 неща откривам в твоя код на пръв поглед като причини да не ти се получава 1-я пример:

1. До колкото разбирам по условие 2-я вход е за цената за възрастни, а 3-я за броя младежи, а на теб 2-я ти е за броя младежи, а 3-я за цената на възрастни. И от там ти се омазва всичко...

Размени тези 2 реда:

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

double adultTicketPrice = double.Parse(Console.ReadLine());

2. И отделно в кода, който си дал имаш 1 вход по-малко - липсва ти за flight duration. И във формулата за outcome трбява да включиш него, не броя полети.

3. И отговорът, който се търси в първия пример е $5.000, не $5000 . На теб ти се получава цяло число $5, вместо дробно $5.000 -  За да го форматираш както трябва $. можеш да го включиш спокойно в първия стринг да стане ей така -

Console.WriteLine("You're ahead with {0:f3}$.", profit); - и става както трябва. Идеята на {0:f3} е точно целия стринг да е събран на едно място.

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

По условие 

Console.WriteLine("Overall profit -> {0:f3}$.", profit);
Console.WriteLine("Average profit -> {0:f3}$.", avgProfit);

трябва да са след всички полети, т.е. по някакъв начин трябва да се сумира за всеки полет печалбата. Трябва да са изнесени извън for - цикъла. С първия пример се получава, защото там броя полети е 1.

P.S edit. Ето го моето решение: https://dotnetfiddle.net/UKtB4G . Само че там има ограничение до 10 въвеждания на входа, и при втория пример не може да се тества, тъй като за 2 полета минават 10. Но мина проверките в judge със 100/100.

0
17/06/2016 09:53:39
rado84 avatar rado84 1 Точки

Има вход за flight duration. Само че условието е сбъркано и вместо "брой на полетите" е наречено "продължителност на полетите", което ме обърква и затова го преименувах на простото "flights", чиято декларация се намира точно над ФОР цикъла. Откъде знам, че условието е сбъркано? Защото пише следното:

For each flight you need to calculate your profit, subtracting the expense from the income, and you need to print the result. After all flights, you need to calculate your overall and average profit.

Output

  • For each flight you need to calculate the profit and print the result in the following format:
    • If the income is greater or equal than the expense:
  • If the expenses are greater:

After all of the flights you need to print the overall profit

При толкова споменавания на брой полети и само една променлива с име "продължителност на полета", няма какво друго да е, освен да е сбъркано. Освен това пише, че FD е цяло число. Щом е цяло число, значи става въпрос за брой полети. Отделно, че Джъдж не се интересува как си си кръстил променливата (знам, защото съм го тествал вече), интересува го да има вход за нея.

Сега направих нещата както ти казваш (вкл. и прекръстих "flights" на "flightDuration") и новият резултат е с 200 долара повече от това, което трябва да бъде: +205 долара.

-1
17/06/2016 10:22:02
Maria_ls avatar Maria_ls 383 Точки

Неее, вярно е малко объркващо, но виж на Input какво ти пише -

On the first line you will receive an integer N (1 e в първия пример), the number of flights you need to manage. For each flight you will receive exactly 7 lines of input:

adult passengers count (6)

adult ticket price (20)

youth passengers count (11)

youth ticket price (10)

fuel price per hour (15)

fuel consumption per hour (5)

flight duration (3) 

Значи стават общо 8 променливи, за които трябва да въвеждаш вход - N извън цикъла + всичките 7 от списъка по веднъж във всеки цикъл от 0 до N - твоите са общо 7 (както каза - не става въпрос как са кръстени, а колко от тях въвеждаш на входа).

Това N ти е за броя полети, по който ще връткаш for-а. Аз просто съм го прекръстила flights, за да ми е по-ясно после, отделно последното ти е за flight duration (продължителност на полета, т.е. часовете, които трае един полет), с което трябва да изчисляваш формулата. На втората страничка от условието ти е за него.

The flight duration will be integer in range [0…72].

Направи си проверка по първия пример в твоя код, да видиш че последното число, което е 3 никъде не го въвеждаш.

 

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