Решение задачи на Java
Есть задача. Нужно написать программу, которая распределит ящики по контейнерам и грузовикам в зависимости от их количества. Программа должна выводить необходимое для этого число грузовиков и контейнеров.
Принцип работы программы Указываем число ящиков — получаем результат в виде строк: Грузовик 1: Контейнер 1: Ящик 1 Ящик 2 Ящик 3 … Контейнер 2 Ящик 28 Ящик 29 … Необходимо: грузовиков — 1 шт. контейнеров — 10 шт.
Я написал код, но не могу понять, как сделать всё с помощью только 1 цикла.
- у меня получается 28 ящиков, а не 27. Не могу исправить никак это. Константы только добавил, еще не успел их вставить в методы.
public static final int CONTAINERS_IN_TRUCK = 12;
public static final int BOXES_IN_CONTAINER = 27;
private int container;
private int box;
private int truck;
/**
Попробуйте решить вопрос с обратной стороны, ведь нам неизвестно количество грузовиков изначально.
Переберите все ящики и промаркируйте (выводите в консоль) номер контейнера или грузовика перед ящиком номер которого
делится без остатка на вместимость контейнера или грузовика
Для этого есть операция нахождения остатка от деления %
Достаточно использовать один цикл for
- ? выносите условие задачи в константы - это позволит проще и быстрее менять условия при необходимости
final int CONTAINERS_IN_TRUCK = 12;
final int BOXES_IN_CONTAINER = 27;
*/
public Truck(int box) {
// 27 ящиков в контейнере, 12 контейнеров в грузовике
this.box = box;
if (box != 0)
{
container = box % 27 == 0 ? box / 27 : box / 27 + 1;
}
if (container != 0)
{
truck = container % 12 == 0 ? container / 12 : container / 12 + 1;
}
}
public int getBox() {
return box;
}
public int getContainer() {
return container;
}
public int getTruck() {
return truck;
}
public void quantity() {
int b = 1;
int c = 1;
for (int t = 1; t <= truck; t++){
System.out.println("\nномер грузовика" + t);
int c1 = 0;
//12
while (c1 <= 12 && c <= container){
System.out.println("\nномер контейнера" + c);
int b1 = 0;
//27
while (b1 <= 27 && b <= box){
System.out.println("\tномер коробки" + b);
b++;
b1++;
}
c++;
c1++;
}
}
}
}```