Урок 15 задача 14

Урок 15 задача 14

Напишите функцию, которая принимает на вход целое число N и возвращается строку, содержащую арифметическое выражение вида:

a1 # a2 # ..... # aN

Где:

a1, a2,....., aN -- случайные числа из диапазона от 1 до 100
# - один из случайных знаков (*, +, -)

program project1;
var n:integer;

function Stroka(numb: integer): string;
var strZnach1,strZnach2: string;
  i,rndNumb,rndZnak:integer;
  nwArr: array[1..3] of char = ('*', '+', '-');
begin
  randomize();
  for i:=1 to numb do
  begin
    rndNumb:=random(100)+1;
    rndZnak:=random(3)+1;
    str(rndNumb,strZnach2);
    if i<numb then
      strZnach1:=strZnach1+' '+strZnach2+' '+nwArr[rndznak]
    else
      strZnach1:=strZnach1+' '+strZnach2;
    end;
  result:=strZnach1;
end;

begin
  write('vvedite chislo, n = ');
  readln(n);
  write(stroka(n));
  readln();
end.                
vedro-compota's picture

1) Проверять в цикле каждый раз - не оптимально:

 if i<numb then
      strZnach1:=strZnach1+' '+strZnach2+' '+nwArr[rndznak]
    else
      strZnach1:=strZnach1+' '+strZnach2;
    end;

можно использовать подход:

str // до цикла
+ str
+ str
+ str
+ str

2) Накапливать итоговое значение можно сразу в result

_____________
матфак вгу и остальная классика =)