Задача 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 [1..9] of integer;
 var
   a: arr;
   N, min, max, i: integer;
   procedure shift(var mas: arr; j, a: integer);
   begin
     for j:= a to high(mas) do
       mas[j]:= mas[j + 1];
   end;
begin
  min:= -50;
  max:= 50;
  randomize();
  //заполнение массива a
  for i:= low(a) to high(a) do
    begin
       a[i]:= min + random(max - min + 1);
    end;
  //вывод массива a
  for i:= low(a) to high(a) do
    writeln('Element ', i, '= ', a[i], ' ');
  N:= random(9) + 1;//случайное число от 1 до 9
  writeln('N = ', N);
  a[N]:= 0;
  shift(a, i, N);// процедура сдвига массив
  //вывод измененного массива a
  for i:= low(a) to high(a) do
     writeln('Element ', i, '= ', a[i], ' ');
   readln();
end.        
vedro-compota's picture

 procedure shift(var mas: arr; j, a: integer);
   begin
     for j:= a to high(mas) do
       mas[j]:= mas[j + 1];
   end;

-- перебор выходит за пределы массива

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

const
 last = 9;
type
  arr = array [1..last] of integer;
 var
   a: arr;
   N, min, max, i: integer;
   procedure shift(var mas: arr; j, h, f: integer);
   begin
     for j:= h to high(mas) - 1 do
       mas[j]:= mas[j + 1];
     mas[f]:= 0;
   end;

begin
  min:= -50;
  max:= 50;
  randomize();
  //заполнение и вывод массива a
  for i:= low(a) to high(a) do
    begin
       a[i]:= min + random(max - min + 1);
       write(i, '=', a[i], ' ');
    end;
  writeln();
  N:= random(9) + 1;//случайное число от 1 до 9
  writeln('N = ', N);
  shift(a, i, N, last);// процедура сдвига массив
  writeln();
  //вывод измененного массива a
  for i:= low(a) to high(a) do
     write(i, '=', a[i], ' ');
   readln();
end.  
vedro-compota's picture

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

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