Написать программу в Pascal. Старинная задача. Сколько можно купить быков, коров и телят, если плата за быка 5 рублей, за корову - 3 рубля, за теленка - полтинник (0,5 рубля), если на 100 рублей надо купить 100 голов скота. Плюс 1 балл, если алгоритм эффективный.

Ответы

Ответ дал: raf1O5
0

program raf105;

const

s = 100;

var b,k,t: integer;

begin

writeln('Все возможные решения задачи:');

for b:=0 to (s div 5)+1 do

 for k:=0 to ((s - b*5) div 3)+1 do

 begin

   t := trunc( (s - b*5 - k*3) / 0.5 );

   if ((b+k+t) = 100) and ( (b*5+k*3+t*0.5)=s)

     then begin

       writeln;

       writeln('Быков: ',b);

       writeln('Коров: ',k);

       writeln('Телят: ',t);

     end;

 end;

end.

PascalABC 3.4.2

Ответ дал: raf1O5
0
Ваш вариант решения задачи на PascalABC или Алгоритмическом языке представляет больший интерес для меня и для автора вопроса.
Ответ дал: answer2020
0
Математически задача описывается через систему уравнений 5i+3j+0,5k=100 и i+j+k=100. Умножим первое уравнение на два и вычтем из него второе. Получим следующее выражение: 9i+5j=100. Преобразовав это выражение, получим j=(100-9i)/5, j=20-9i/5. Это ключевая формула для решения данной задачи. i и j – целые положительные числа. j принимает целое значение только при i=0, i=5, b i=10. Другие, бОльшие чем 10 значения i, кратные 5, нам не подойдут, поскольку j в этом случае станет отрицательным.
Ответ дал: answer2020
0
Программа будет заключаться организации цикла, в котором i изменяется от 0 до 10 с шагом 5. В теле цикла вычисляется значение j, равное 20-9*i/5 и к, равное 100—i-j. Вычисленные значения, здесь-же в цикле и печатаются.
Ответ дал: raf1O5
0
program answer2020;
var
i: integer;
k,j: real;
begin
writeln('Все возможные решения задачи:');
writeln;
while i < 15 do
begin
j:= 20-9*i/5;
k:= 100-i-j;
writeln('Быков: ',i);
writeln('Коров: ',j);
writeln('Телят: ',k);
writeln;
i:= i+5;
end;
end.
Ответ дал: answer2020
0
Красота! :-)
Вас заинтересует