Требуется определить, сколько можно преобрести ручек (по цене 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 и c оба уравнения будут истинны, значит эти значения являются решением для системы уравнений.
Система уравнений может иметь несколько решений или не иметь ни одного.
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); readln; 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; readln; end.
Комментарии
Помогите решить пожалуйста уравнение в Turbo Pascall
y=1/cos(x)*ln(b+a)*(a+b)
Программа