webgirl Насчет второй - вверху приведен текст, который, как видно, и хотел препод... Третью я решил ОЧЕНЬ нетривиально - боюсь, что она преподу тоже не понравится:
Код
type
myFunc = function(a, b: integer):integer;
function myAdd(a, b: integer): integer; far;
begin myAdd := a + b end;
function mySub(a, b: integer): integer; far;
begin mySub := a - b end;
function myMult(a, b: integer): integer; far;
begin myMult := a * b end;
function myDiv(a, b: integer): integer; far;
begin myDiv := a div b end;
const
nums: array[1 .. 6] of integer =
(1, 2, 3, 4, 5, 6);
result = 35;
type
oper = (opPlus, opMinus, opMult, opDiv);
const
fs: array[oper] of myFunc =
(myAdd, mySub, myMult, myDiv);
ch: array[oper] of char =
('+', '-', '*', '/');
function f(a1, a2, a3, a4, a5: oper): integer;
begin
f := fs[a5](fs[a4](fs[a3](fs[a2](fs[a1](nums[1], nums[2]), nums[3]), nums[4]), nums[5]), nums[6]);
end;
var
s1, s2, s3, s4, s5: oper;
found: boolean;
begin
for s1 := opPlus to opDiv do
for s2 := opPlus to opDiv do
for s3 := opPlus to opDiv do
for s4 := opPlus to opDiv do
for s5 := opPlus to opDiv do
If f(s1, s2, s3, s4, s5) = result then
begin
found := true;
writeln('was found:');
writeln('1'+ch[s1]+'2'+ch[s2]+'3'+ch[s3]+'4'+ch[s4]+'5'+ch[s5]+'6');
end;
if not found then
writeln('was not found:')
end.
А над второй подумаю...