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

Задача №11 из главы 15

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

a1 # a2 # ..... # aN

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

program def_input_number_out_string_expression;
 
function str_expression( number : integer ): string;
   var i : integer;
       s, sign, str_value : string;
begin // начало тела функции
  randomize;
  s := '';
  sign := '*+-';
  for i := 1 to ( number + number - 1 ) do
      if( i mod 2 = 0 ) then
         s += sign[random( 3 ) + 1 ] // добавление знака к строке
      else
      begin
         str( random( 100 ) + 1, str_value );
         s += str_value; // добавление числа к строке
      end;
  str_expression := s; 
end; // завершение тела функции
 
begin // основная программа
  var s: string;
  s := str_expression( 20 ); // вызов процедуры
  writeln( s );
  readln();
end. // завершение основной программы
vedro-compota's picture

можно вполне сделать без if и с числом операций N (а не N + N - 1)

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

program def_input_number_out_string_expression;
   
function str_expression( number : integer ): string;
   var i : integer;
       s, sign, str_value : string;
begin // начало тела функции
  randomize;
  s := '';
  sign := '*+-';
  for i := 1 to ( number ) do
  begin
     str( random( 100 ) + 1, str_value );
     s += str_value; // добавление числа к строке
     if( i <> number ) then
        s += sign[random( 3 ) + 1 ] // добавление знака к строке
  end;
  str_expression := s;  // возврат функции
end; // завершение тела функции

var s: string;   
begin // основная программа
  s := str_expression( 20 ); // вызов процедуры
  writeln( s );
  readln();
end.