Решение на две изпитни задачи.
Здравейте,
Моля за малко помощ, защото не успях да взема 100/100 на долните две изпитни задачи, реших го по всевъзможни начини, но нещо ми убягва и не мога да разбера какво.
Ето я първата:
Задача 3. Компютърна зала
В най-голямата компютърна зала в България цените варират поради голямата посещаемост. Таксите на залата били в зависимост от това дали е ден или нощ, както и месеца в който се посещава залата. Цените са следните:
|
Март до Май |
Юни до Август |
Ден |
10.50лв/ч |
12.60лв/ч |
Нощ |
8.4лв/ч |
10.20лв/ч |
Предлагат се и следните отстъпки в следната последователност:
- За група от четирима или повече човека, цената на човек се намалява с 10%
- При 5 или повече часа прекарани, цената се намалява с 50% на човек
Да се напише програма, която изчислява цената на човек за час и общата сума.
Вход
Входът се чете от конзолата и съдържа точно 4 реда:
- На първия ред - месецът - текст с възможности "march", "april", "may", "june", "july", "august"
- На втория ред - броят на прекараните часове, цяло число [1...10]
- На третия ред - броят на хората в групата, цяло число [1...10]
- На четвъртия ред - времето от деня – текст с възможности: "day","night"
Изход
Да се отпечатат на конзолата два реда:
- На първия ред: "Price per person for one hour: {цена на човек на час}"
- На втория ред: "Total cost of the visit: {общата сума}"
Цената да бъде закръглена до втория знак след десетичната запетая.
Примерен вход и изход
Вход |
Изход |
Обяснения |
march 3 3 day |
Price per person for one hour: 10.50 Total cost of the visit: 94.50 |
Цената е 10.50лв. (march day) на човек. (10.50 * 3) * 3 = 94.50лв. общо за цялото посещение |
july 5 5 night |
Price per person for one hour: 4.59 Total cost of the visit: 114.75 |
Цената е 10.20лв. (july night) на човек. Хората са повече от 4 => 10.20 – (10.20 * 0.1) = 9.18лв. Часовете са 5 => 9.18 - (9.18 * 0.5) = 4.59лв. на човек. (4.59 * 5) * 5 = 114.75лв. общо за цялото посещение |
Ето и моето решение за нея:
Ето я и другата задача:
Изпит по "Основи на програмирането" -
29 февруари и 1 март
Задача 4. Подаръци от Дядо Коледа
Дядо Коледа започва да обикаля от град на град за да носи подаръци на всички послушни деца. Той ви моли да напишете програма, която да принтира на конзолата всички адресни номера от М до N, които се делят едновременно на 2 и на 3 без остатък, тъй като Дядо Коледа, знае че там живеят само послушни деца. От конзолата ще се чете още един номер на адрес S. Ако някое от делящите се на 2 и 3 адреси е равно на адреса S, този адрес не трябва да се принтира и програмата трябва да приключи. В противен случай се принтират всички адресни номера до N, които отговарят на условието.
Вход
От конзолата се четат точно 3 числа, всяко на отделен ред:
- N – цяло число – 0 <= N < M
- M – цяло число – N < M <= 10000
- S – цяло числo – N <= S <= M
Изход
На конзолата се принтират на един ред, всички адресни номера отговарящи на условията, разделени с интервал.
Примерен вход и изход
Вход |
Изход |
Обяснения |
1 30 15 |
30 24 18 12 6 |
Адресните номера от 30 до 1, които се делят едновременно на 2 и на 3 без остатък са: 30, 24, 18, 12 и 6. Като 15 не е равно на нито едно, затова поредицата не бива прекъсната. |
Вход |
Изход |
|
1 36 12 |
36 30 24 18 |
Адресните номера от 36 до 1, които се делят едновременно на 2 и на 3 без остатък, са: 36, 30, 24, 18, 12 и 6. 12 е равно на адреса S, затова спираме до 18. |
Вход |
Изход |
|
20 1000 36 |
996 990 984 978 972 966 960 954 948 942 936 930 924 918 912 906 900 894 888 882 876 870 864 858 852 846 840 834 828 822 816 810 804 798 792 786 780 774 768 762 756 750 744 738 732 726 720 714 708 702 696 690 684 678 672 666 660 654 648 642 636 630 624 618 612 606 600 594 588 582 576 570 564 558 552 546 540 534 528 522 516 510 504 498 492 486 480 474 468 462 456 450 444 438 432 426 420 414 408 402 396 390 384 378 372 366 360 354 348 342 336 330 324 318 312 306 300 294 288 282 276 270 264 258 252 246 240 234 228 222 216 210 204 198 192 186 180 174 168 162 156 150 144 138 132 126 120 114 108 102 96 90 84 78 72 66 60 54 48 42 |
Ето и решението ми за втората:
Благодаря Ви за отделеното време. много ще се радвам ако някой ми помогне, да разбера къде ми е пропуска.
Понеже използваш лист в тази задача поради някаква причина, което не е лошо, но самата идея на листа тук е да не повтаряш на всякъде съдържанието от вътре. Eто ти едно решение: https://pastebin.com/rnYNefz6, което написах специално за теб, в което има и мини речници за цените, за да придобиеш представа как да не си повтаряш проверките, като не визирам само листа.
В другата задача можеше просто да му кажеш, че цикъла трябва да му е до n-1, за да е до n включително.
Благодаря Ви и на двамата за отделеното време. И двете задачи съм ги решил по 6-7 различни начина. За 4та пробвах и твоя вариан, но никое не работеше. Не знам към кого да се обърна, защото от soft уни нито си дигат телефона, нито отговарят на съобщения няма никаква връзка с тях, за да проверят, дали наистина проспуска е при мен.
Здрасти може ли малко помощ за java basic на двете?