Задача 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|

Примечание: операции сдвига элементов массива оформите в виде подпрограммы.

program zadacha8;
var a: array [1..9] of integer;
  i, n: integer;

procedure sdvig(m: integer; var b: array of integer);
  var j:integer;
begin
  for j:=1 to 9 do
    if j >= m then
      b[j-1]:=b[j];
end;

begin
  randomize();
  for i:=low(a) to high(a) do
  begin
    a[i] := -1000 + random(2001);
    write(a[i],' ');
  end;
  writeln();
  n := random(8)+1;
  writeln(n);
  sdvig(n,a);
  for i:=low(a) to high(a) do
    write(a[i], ' ');
  readln();
end.

Консоль

583 -351 -118 -280 942 -519 505 -493 -398
6
583 -351 -118 -280 942 505 -493 -398 0
vedro-compota's picture

  for j:=1 to 9 do
    if j >= m then
      b[j-1]:=b[j];

-- можно уменьшить число итераций и уйти от if

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

program zadacha8;
var a: array [1..9] of integer;
  i, n: integer;

procedure sdvig(m: integer; var b: array of integer);
  var j:integer;
begin
  for j:=m to 9 do
      b[j-1]:=b[j];
end;

begin
  randomize();
  for i:=low(a) to high(a) do
  begin
    a[i] := -1000 + random(2001);
    write(a[i],' ');
  end;
  writeln();
  n := random(8)+1;
  writeln(n);
  sdvig(n,a);
  for i:=low(a) to high(a) do
    write(a[i], ' ');
  readln();
end.   
vedro-compota's picture

  
for j:=m to 9 do
      b[j-1]:=b[j];

-- сдвиг не по задаче + забыли заполнить "то что справа нулями"

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