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.
 А над второй подумаю...