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

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

Заполнить массив из 9 элементов случайными числами, далее получить случайное число N из диапазона от 1 до 9 и затем "удалить" элемент с позиции N из массива, "сдвинув" значения влево и заполнив все что справа нулями.
Например:

|1|3|4|5|4|7|-8|-9|

Путь n=2, тогда после работы программы мы должны получить:

|1|4|5|4|7|-8|-9|0|

type arr = array[0..8] of integer;
var i,t,n : integer;
  first_array, second_array : arr;
procedure shift(f_array,s_array : arr; u : integer; var change : arr );
var  g : integer;
begin
  for g := low(s_array) to high(s_array) do
    begin
      if g = u then
        break;
      s_array[g] := f_array[g];
    end;
  for g := u to high(s_array) do
    begin
    s_array[g-1] := f_array[g];
    end;
  for g := low(change) to high(change) do
    change[g] := s_array[g];
end;
begin
  for i := low(first_array) to high(first_array) do
    begin
      first_array[i] := random(10);{инициализируем первый массив случайным
      числом}
      second_array[i] := 0;
    end;
  for i := low(first_array) to high(first_array) do
    write(first_array[i], ' ');{выводим первый массив}
  for i := low(first_array) to high(first_array) do
    begin
      write('Введите значение');{запрашиваем значение переменной}
      readln(n);
      shift(first_array, second_array,n,first_array);
      for t := low(first_array) to high(first_array) do
        begin
          write(first_array[t], ' ');{выводим первый массив}
        end;
      writeln();
    end;
  readln();
end.
vedro-compota's picture

переделать структуру, чтобы для сдвига и получения нового состояния массива использовалась функция:

  • она должна принимать массив и номер позиции для сдвига

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

Добавлена функция для сдвига

type arr = array[1..9] of integer;
var first_array: arr;
  i,n: integer;
function shift(value_user: integer; f_array: arr): arr;
var g: integer;
begin
  for g := value_user to (high(f_array)-1)  do
    f_array[g] := f_array[g+1];
  f_array[high(f_array)] := 0;
  result := f_array;
end;
begin
  randomize;
  for i := low(first_array) to high(first_array) do
    begin
      first_array[i] := random(100);
      write('|',first_array[i], '|');
    end;
  writeln();
  write('Введите случайное число от 1 до 9 и нажмите ENTER: ');
  readln(n);
  first_array := shift(n,first_array);
  for i := low(first_array) to high(first_array) do
    write('|',first_array[i], '|');
  readln();
end.
vedro-compota's picture

решение засчитано

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