Задача 9 Урок 15

Задача 9 Урок 15

Заполните массив из 5 элементов случайными числами из любого диапазона.
Далее пользователь вводит в цикле значения от 1 до 5 -- удаляйте из массива очередной элемент с позиции очередного введенного пользователем числа, сдвигая оставшиеся элементы второго массива влево, заполняя то, что справа нулями. Распечатывайте промежуточной состояние массива, после каждого удаления. Цикл должен работать до тех пор, пока в массиве не останется ненулевых элементов или пока пользователь не введет число большее чем 5 или меньшее чем 1.

const
  l = 5;
type
  arr = array [1..l] of integer;
 var
   a1: arr;
   a2: arr;
   N, min, max, i: integer;
   flag: boolean;
   //процедура сдвига массива
   procedure shift(var mas: arr; j: integer);
   begin
     for j:= low(mas) to high(mas) do
       mas[j]:= mas[j + 1];
   end;
   //функция определения пустой массив или нет
   function noZero(var mas: arr; j, a: integer): boolean;
    var
      count: integer;
    begin
      for j:= low(mas) to high (mas) do
       if mas[j] = 0 then
         inc(count);
      if count = high(mas) then
        result:= false;
    end;
begin
  min:= -50;
  max:= 50;
  N:= 1;
  flag:= true;
  randomize();
  //заполнение и вывод оригинального массива массива a1
  writeln('Massiv 1');
  for i:= low(a1) to high(a1) do
    begin
       a1[i]:= min + random(max - min + 1);
       writeln('Element ', i, '= ', a1[i], ' ');
    end;
  writeln();
  //заполнение массива 2 a2
  writeln('Massiv 2');
  for i:= low(a2) to high(a2) do
  begin
     a2[i]:= a1[i];
     writeln('Element ', i, '= ', a2[i], ' ');
  end;
  //обнуление массива а1 и сдвиг массива а2
  while (N >= 1) and (N <= 5) do
  begin
     writeln('Vvedite celoe chislo ot 1 do 5');
     readln(N);
     a1[N]:= 0;
     writeln();
     //вывод измененного массива a1
     writeln('Massiv 1:');
     for i:= low(a1) to high(a1) do
      writeln('Element ', i, '= ', a1[i], ' ');
     writeln();
     shift(a2, i);// процедура сдвига массив
     flag:= noZero(a1, i, N);//проверка на нулевой массив
     //вывод измененного массива a2
     writeln();
     writeln('Massiv posle sdviga');
    for i:= low(a2) to high(a2) do
       writeln('Element ', i, '= ', a2[i], ' ');
    if (not flag) then
       break;
  end;
   writeln('Cikl zavershen');
   readln();
end.    
vedro-compota's picture

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

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