Решение системы уравнений
Требуется определить, сколько можно приобрести ручек (по цене 10 руб.), карандашей (по 5 руб.) и ластиков (по 2 руб.) на 100 рублей. При этом всего предметов должно быть 30.
Обозначим искомое количество ручек, карандашей и ластиков через переменные a, b и cсоответственно.
Цены предметов: pa, pb, pc.
Количество предметов: qty.
Сумма покупки: sum.
Алгоритм решения задачи:
Составим систему уравнений.
Уравнение суммы покупки: 10*a + 5*b + 2*c = 100
Уравнение количества предметов: a + b + c = 30
Заменим числа соответствующими переменными:
Уравнение суммы покупки: pa*a + pb*b + pc*c = sum
Уравнение количества предметов: a + b + c = qty
Чтобы перебрать все возможные варианты сочетания переменных a, b и с, надо использовать три цикла, вложенные друг в друга.
Если при каких-либо значениях a, b и с оба уравнения будут истинны, значит эти значения являются решением для системы уравнений.
Система уравнений может иметь несколько решений или не иметь ни одного.
Программа на языке Паскаль:
var
a, b, c: byte;
pa, pb, pc: byte;
qty, sum: byte;
begin
qty := 30;
sum := 100;
pa := 10;
pb := 5;
pc := 2;
for a:=0 to (sum div pa) do
for b:=0 to (sum div pb) do
for c:=0 to (sum div pc) do
if (pa*a + pb*b + pc*c = sum) and
(a + b + c = qty) then
writeln (a:3,b:3,c:3);
end.
При заданных данных программа выдаст два варианта решения системы уравнений:
2 8 20
5 0 25
Программа может выглядеть по-другому. При заданных значениях a и b определить c можно по формуле qty - a - b
. В таком случае код будет выглядеть так:
var
a, b, c: byte;
pa, pb, pc: byte;
qty, sum: byte;
begin
qty := 30;
sum := 100;
pa := 10;
pb := 5;
pc := 2;
for a:=0 to (sum div pa) do
for b:=0 to (sum div pb) do begin
c:= qty - a - b;
if (pa*a + pb*b + pc*c = sum) and
(a + b + c = qty) then
writeln (a:3,b:3,c:3);
end;
end.