Loading...
tiapko avatar tiapko 31 Точки

Задача - Andrey and billiard - 80/100

Здравейте,

 

Решавам тази задача, но не мога да разбера защо ми дава 80/100, пробвах най-странните входове, които се сетих но не успях да си я счупя. Пробвах и с празен вход (това, че винаги принят ред с Total, пак не е проблем).

 

Може ли един поглед: http://pastebin.com/rmhh575K

1.Andrey and billiard

Andrey is the guy who gives us food and drinks at the game bar. He likes to play billiard. Since you are nice guy you want to help him play more of his favorite game. You decide to create a program which will help him to take orders faster and generate billing information.

First you will receive an integer - the amount of entities with prices (separated by "-"). Then you will receive a list of client. For every consumer you will receive what to buy and how much. When you receive a command: "end of clients" you should display information about every client described below. After that say how much total money were spent while Andrey was playing billiard.

Constraints

  • If an entity is added more than once you should override the previous price.
  • If buyer tries to buy an entity that is not existing - you should ignore that line.
  • Buyers should be ordered by name ascending.
  • All floating point digits must be rounded to 2 digits after decimal separator.
  • In the end of every buyer his bill should be summed.
  • Quantity is an integer. Price – floating point.

Examples

Input

Output

Comments

4

Cola-1.25

Sandwich-2.30

Bira-0.01

Bira-2

Toshko-Bira,3

Mira-Sandwich,1

Marto-Kola,2

end of clients

Mira

-- Sandwich - 1

Bill: 2.30

Toshko

-- Bira - 3

Bill: 6.00

Total bill: 8.30

Bira's price is overwritten.

Since there is no entity named "Kola"- we should ignore that line.

 

 

Тагове:
0
Fundamentals Module 15/10/2016 21:48:01
Plamen27 avatar Plamen27 599 Точки
Best Answer

Ти писа, че "пробвах най-странните входове, които се сетих но не успях да си я счупя"

В предната тема бях дал вход, който ако го изпечаташ правилно би трябвало да получиш 100 от 100:

4
Cola-1.25
Sandwich-2.30
Bira-0.01
Bira-2
Toshko-Bira,3
Mira-Sandwich,1
Mira-Cola,2
Mira-Bira,2
Toshko-Bira,3
Marto-Kola,2
end of clients

Трябва да върне:

Mira
-- Sandwich - 1
-- Cola - 2
-- Bira - 2
Bill: 8.80
Toshko
-- Bira - 6
Bill: 12.00
Total bill: 20.80

Виж какво връща при теб:

Mira
-- Sandwich - 1
-- Cola - 2
-- Bira - 2
Bill: 8.80

Mira
-- Cola - 2
-- Bira - 2
Bill: 6.50
Mira
-- Bira - 2
Bill: 4.00

Toshko
-- Bira - 6
Bill: 12.00

Total bill: 31.30

Програмата ти връща доста излишни работи и основния проблем е крайната сума.

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

2
tiapko avatar tiapko 31 Точки

Много Ви Благодаря!

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

1
iliyamar avatar iliyamar 13 Точки

Здравейте,

При мен, теста който използвате дава верен резултат, но въпреки това Judge ми дава едва 60/100.
Дали ще можете да погледнете и да дадете някаква идея къде греша? 
http://pastebin.com/bHKTHqPs

0
Plamen27 avatar Plamen27 599 Точки

Здравей,

Съвета ми към теб е cъщия като на колегата - да пренапишеш задачата гледайки предните решения, където логиката е по-проста, няма нужда от много усложняване. Погледни видеото на Кирил от упражненията и фиксовете.

Ето ти нов тест, който показва грешките ти.

5
Cola-1.25
Sandwich-2.30
Bira-0.01
Bira-2
Bira-1
Toshko-Sudjuk,4
Toshko-Bira,3
Mira-Sandwich,1
Mira-Cola,2
Mira-Bira,2
Toshko-Bira,3
Marto-Kola,2
Dinko-Cola,3
Dinko-Sola,5
Tishko-Sopola,4
Muncho-Kola,3
Dinko-Bira,2
Mira-Cola,1
Tishko-Sandwich,2
end of clients

Ето какво трябва да върне:

Dinko
-- Cola - 3
-- Bira - 2
Bill: 5.75
Mira
-- Sandwich - 1
-- Cola - 3
-- Bira - 2
Bill: 8.05
Tishko
-- Sandwich - 2
Bill: 4.60
Toshko
-- Bira - 6
Bill: 6.00
Total bill: 24.40

Виж какво връща при теб:

Dinko
-- Cola - 3

-- Sola - 5
-- Bira - 2
Bill: 5.75
Mira
-- Sandwich - 1
-- Cola - 3
-- Bira - 2

Bill: 8.05
Tishko

-- Sopola - 4
-- Sandwich - 2
Bill: 4.60
Toshko

-- Sudjuk - 4
-- Bira - 6
Bill: 6.00
Total bill: 24.40

Програмата ти смята точно, но когато съществуващ клиент поръчва несъществуваща стока, ти го печаташ и така програмата ти гърми. Това е проблема.

0
vanmx avatar vanmx 4 Точки

Незнам, аз от няколко часа се мъча с тази задача и не мога да си намеря бъга и това е. Незнам колко пъти я пусках с дебъгера и колко търсих, логиката ми изглежда все така напълно вярна но judge-а си дава 60/100 и това си е. Ако на някой му се занимава, ще съм му благодарен ако погледне решението ми, на мен вече ми омръзна да се занимавам с тая задачка :) Ето я тук http://pastebin.com/LHizujuh

0
11/02/2017 10:19:05
viraco4a avatar viraco4a 28 Точки

Колега, сигурно 1 година по-късно си я решил, но може друг колега, който сега я мъчи да му помогне това, което открих в кода ти: между редове 50-56, където добавяш клиент към списъка ти с клиенти, не разглеждаш случая, при който новопристигналия клиент е съществуващ (по Name) вече в списъка ти. Така в този случай вместо да добавиш само продуктите му, ти създаваш нов клиент със същото име. 
Ето моето решение, доста подобно на твоето и имах същия проблем като тебе. Проверката, за която говоря е на редове 69-84. Предполагам с някаква по-читава linq логика може да се напише на 1 ред, но нещо не го измислих, затова форийчвам:

https://pastebin.com/8qBGmBBb

П.С. Прочетете какво е писал Plamen27, неговият пост много ми помогна да открия къде бъркам!

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