# MockExam5 - 1

Някой help
Дава ми 46/10, подозирам или че не разбирам условието както трябва или иска да правя някой масив.

# Mineral Water

Jimmy is a truck driver who delivers mineral water. He loads the water from a warehouse and distributes it within many stores in the town. Sometimes when Jimmy goes to the warehouse there is not enough water to full the truck which makes him angry. He wants to go for delivery only if the truck is full.

You can help him if you write a program that checks if it is possible to load the whole truck.

The mineral water is available in two types of bottles - 1 liter and 5 liters. Jimmy always tries to load as much of the big bottles first and then adds small bottles. Given the capacity of the truck and the available bottles in the warehouse you should calculate the number of small bottles that he will load. If there are not enough small bottles the result should be -1.

## Input

• The number of small bottles in the warehouse - integer number
• The number of big bottles in the warehouse - integer number
• The capacity of the truck - integer number

## Output

Print to the standard output:

• One line of output:
• the number of small bottles he will deliver.
• -1 if not possible to fill completely the truck.

## Sample Tests

### Input

``````3
1
8
``````

### Output

``````3
``````

### Input

``````3
1
9
``````

### Output

``````-1
``````

#### Explanation

He can load 9 liters in the truck. If he gets 1 big bottle and 3 small bottles, he will have 8 liters and space for 1 more, so he will not make a delivery.

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

Имаш 3 варианта
1) Капацитета е по-голям от товара, връщаш -1.
2) Капацитета е колкото товара, връщаш малките бутилки.
3) Капацитета е по-малак от товара, връщаш натоварените малки бутилки.

Може да има и 4ти вариант - аз да не съм разбрал също условието, но нямам достъп до задачата за да проверя.
Това би трябвало да ти е решението.

П.С:

Извинявам се на тези който са мат маниаци за допълнителните скоби, наясно съм, че умножението ще е първо, но съм свикнал така да си разписвам.

72/100 дава твоето.

Мисля, че се сещам какво изпускам, кофти е като не мога да submit аз.

Тествай така, би трябвало да е ясна проверката

77/100.
според мен или нещо ни бяга от условието или не знам…

Ами не просто аз съм тъп
При входни данни:
12
0
8
трябва да върнем 8
Махни || от вътрешния else if и трябва да е ок:

Оффф не и така не трябва да е помисли за варианта за
5
5
13
Така трябва да е 3
Не съм на компа да го разпиша

Ако имаш предвид да махна дясната част от els if ||, пак не става.

Може би ако има случай капацитет 10 и има въведени 2 малки 2 големи, ще върне едната голяма и ще стане 5 + 2 = 7 и сътветно ще принтира -1, понеже пише че работи с големи и малки. След малко ще пробвам, че решавам другите.

Виж това решение,тегава е докато я осмилиш - import java.util.Scanner;public class Mock5_mineralWater { public stati - Pastebin.com

2 Likes

Мерси, не се сетих изобщо за while цикъл да изплозвам специално за тази задача.

Здравей,

Страхотна дискусия е станала.
Като цяло е супер, че колегите са споделили два подхода:

1. Решение с вложени if-ове
2. Решение с цикли

Задачата на пръв поглед изглежда лесна за решение с if-ове и първоначално е най-добре да се разпишат всички възможни варианти преди да се премине към писане на код:

``````/**
* All cases
* 1.    Truck capacity is equal to all big bottles
* 2.    Truck capacity is more than all bottles
* 3.    Truck capacity is less than all big bottles
* 3.1   Truck capacity is not equally divided to the big bottles
* Тук има още няколко подслучаи - какво правим с остатъка?
* 3.1.1
* 3.1.2
* 3.1.3
* 4.    Truck capacity is more than all big bottles
* 4.1   The small bottles are less than the left space
* 4.2   The small bottles are equal or more than to the left space
*/
``````

Препоръчвам ти да си разписваш и повече променливи.
Ето пример за четим код:

``````        Scanner scanner = new Scanner(System.in);
int allSmallBottles = Integer.parseInt(scanner.nextLine());
int allBigBottles = Integer.parseInt(scanner.nextLine()) * 5;
int truckCapacity = Integer.parseInt(scanner.nextLine());

int allBottles = allSmallBottles + allBigBottles;
int freeCapacity = truckCapacity - allBigBottles;
int truckIsFull = 0;
int truckNotFull = -1;

if (truckCapacity == allBigBottles){
System.out.println(truckIsFull);
}
``````
3 Likes

Благодаря за съвета !
Успях да я реша с if, подцених я и не и обърнах толкова внимание след като ми даваше Wrong answer.

1 Like

Здравейте,

това е моето решение: Mineral Water - Pastebin.com

Къде мога да намеря Mock Exam 5, за да тествам решението. Не ми излиза никъде в платформата.

Mock Exam 5 и 6 са достъпни за хората, които са се записали за подготвителния курс, който включва 6 съботни сесии.

Поздрави
Петър

Хей, от къде намери този Mock exam Аз нещо не мога да намеря такъв, а си търся допълнителни задачи…

Здравейте искате ли допълнителни задачи ?