Ю3.9

Задача. Голодная зима. Суточный рацион коровы составляет [latex]u[/latex] кг сена, [latex]v[/latex] кг силоса и [latex]w[/latex] кг комбикорма. В хозяйстве, содержащем стадо из [latex]k[/latex] голов, осталось [latex]s[/latex] кг сена, [latex]t[/latex] кг силоса и [latex]f[/latex] кг комбикорма.. В стаде ежедневно погибает [latex]p[/latex]% коров; ежедневно [latex]q[/latex]% оставшегося сена сгнивает; [latex]r[/latex]% силоса разворовывается колхозниками; [latex]t[/latex]% комбикорма распродает зав. фермой. Когда нельзя будет кормить всех оставшихся коров по полному рациону? Какой из видов кормов кончится раньше других?

Тесты:

u v w k s t f p q r h Результат Комментарий
10 10 5 50 2000 1500 1000 2 5 2 2 Через 2 дн. силос закончится. Пройден
15 10 10 50 1500 1500 1000 4 5 3 3 Через 1 дн. сено закончится.

Через 1 дн. комбикорм закончится.

Пройден
10 5 5 50 2000 2000 2000 2 5 5 2 Через 3 дн. сено закончится. Пройден
10 10 5 20 5000 4500 4000 39 5 2 2 Через 3 дн. все коровы умрут. Пройден

Код на С

Код на Java

 

Решение:

По условию задачи каждый день количество припасов меняется в зависимости от прошлодневного количества. В условии продолжения цикла указано допущение, что сперва еда дается коровам, а после количество ее уменьшается согласно заданным условиям (то есть, на сгнивание, разворовывание и продажу корма может и не хватить).

Допустим, что ежедневно умирает  [latex]p[/latex]% от начального количества коров. Чтобы число коров было целым используем функцию round.

В программе введен счетчик дней, который увеличивается на каждом витке цикла, и по завершении указывает количество дней, на которые хватило припасов.  После цикла путем сравнения определим какой из видов кормов закончится раньше, или проверим не погибнут ли все коровы.

С работой программы на С можно ознакомиться здесь, а на Java здесь.

 

Related Images:

Ю2.22

Задача Ю2.22. Голодная зима. Суточный рацион коровы составляет [latex]u[/latex] кг сена, [latex]v[/latex] кг силоса и [latex]w[/latex] кг комбикорма. В хозяйстве, содержащем стадо из [latex]k[/latex] голов, осталось [latex]s[/latex] центнеров сена, [latex]t[/latex] тонн силоса и [latex]f[/latex] мешков комбикорма по 50 кг. Сколько ещё дней хозяйство сможет кормить коров по полному рациону? Какой из кормов кончится раньше других?

[latex]u[/latex] [latex]v[/latex] [latex]w[/latex] [latex]s[/latex] [latex]t[/latex] [latex]f[/latex] [latex]k[/latex] Результат. Комментарий.
1 0,5 3 3 0,2 7 15 7. Комбикорм. Тест пройден.
4 7 5 6 0,6 8 13 6. Комбикорм. Тест пройден.
8 5 3,5 4 1 9 11 4. Сено. Тест пройден.
1 1 1 1 0,1 2 2 50. Сено. Силос. Комбикорм. Тест пройден.

C++:

Java:

По условию задачи необходимо найти количество полных дней, в течение которых корова будет обеспечен полный рацион.

Так как изначально в условии задачи данные различались по единицам измерения, я перевела их все в килограммы. Так же было предусмотрено, что количество килограмм может быть дробным положительным, в то время как количество голов в стаде — только натуральным. Для удобства вычисления я ввела дополнительные переменные [latex]a[/latex], [latex]b[/latex], [latex]c[/latex].

Затем я столкнулась с проблемой округления полученного минимального дробного числа к целому количеству дней. Возьмём первый тест для примера. Минимальное дробное количество дней — 7,77. Функция lround округляет число лишь к ближайшему целому. Поэтому мне потребовалось ввести проверку. Если разница между округлённым минимальным и неокруглённым больше нуля, то программа вычитает из полученного значения единицу. Таким образом программа не считает дни, когда корма бы хватило лишь на определённую часть суток.

Следующей задачей было выведение на экран данных о корме, который закончится первым. Тут я действовала по принципу элементарного сравнения.

В программе использован тип данных с плавающей точкой.

Для выполнения программы и проверки тестов можно воспользоваться следующим объектом (C++) и этим (Java).

Related Images: