Задание 13 Урок 15

Задание 13 Урок 15

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

a1 # a2 # ..... # aN
Где:

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

type arr = array of integer;
var n : integer;
  random_sign : string;
function print_string(n_values: integer; r_sing: string): string;
var first_array : arr;
  min,max,min_x,max_x,i,x : integer;
begin
  min_x := 1;
  max_x := 3;
  min := 1;
  max := 100;
  randomize;
  setlength(first_array,(n_values-1));//обозначаем длинну динамического массива
  for i := low(first_array) to high(first_array) do
    begin
      first_array[i] := min + random(max - min + 1);
      write(first_array[i]);
      if i = high(first_array) then//выход воизбежании повторной печати знака
        break;
      x :=random(max_x-min_x+1)+min_x;
      write(r_sing[x]);
    end;
end;
begin
 random_sign := '*+-';
 write('Введите количество чисел и нажмите ENTER:');
 readln(n);
 print_string(n,random_sign);
 readln();
end.
vedro-compota's picture

  1. функция должна возвращать значение (строку выражения)
  2. распечатывать это значение надо уже в теле основной программы

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

type arr = array of string;
var  n : integer;

function init_string(n_values: integer): string;
var min,max,value_integer,i : integer;
  f_array : arr;

function  string_result(): string;
var m: integer;
  value_string : string;

function string_character(): char;
var min_sing,max_sing,x : integer;
  three_signs : string;
begin
  three_signs := '*+-';
  min_sing := 1;
  max_sing := 3;
  randomize;
  x := min_sing + random(max_sing - min_sing + 1);
  result := three_signs[x];
end;

begin
  for m := low(f_array) to (high(f_array)-1) do
    value_string := value_string + f_array[m] + string_character();
  result := value_string + f_array[low(f_array)];
end;

begin
  min := 1;
  max := 100;
  randomize;
  setlength(f_array,n_values);
  for i := low(f_array) to high(f_array) do
    begin
      value_integer := min + random(max - min + 1);
      str(value_integer,f_array[i]);
    end;
  result := string_result();
end;

begin
  write('Ввведите значение N: ');
  readln(n);
  write(init_string(n));
  readln();
end.
vedro-compota's picture

  1. уйти от вложенных функций
  2. добавить пример распечатки консоли
  3. не очень понятна работа строки:
     result := value_string + f_array[low(f_array)];

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