Урок 15 задача 8

Урок 15 задача 8

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

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

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

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

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

program project1;

var numArr: array [1..9] of integer;
    i,n: integer;

procedure shiftArr(i,n:integer);
begin
  for i:=n to 8 do
    numArr[i]:=numArr[i+1];
  numArr[9]:=0;
end;

begin
  randomize;
  for i:=1 to 9 do
  begin
    numArr[i]:=random(21)-10;
    write(numArr[i],'|');
  end;
  writeln();
  n:=random(9)+1;
  writeln('Случайное значение N: ',n);
  shiftArr(i,n);
  for i:=1 to 9 do
    write(numArr[i],'|');
  readln();
end.                    
vedro-compota's picture

уйти от использования глобальных переменных

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

program project1;

type newArr = array [1..9] of integer;
var numArr: newArr;
    i,n: integer;

procedure shiftArr(var promArr: newArr; j,k:integer);
begin
  for j:=k to 8 do
    promArr[j]:=promArr[j+1];
  promArr[9]:=0;
end;

begin
  randomize;
  for i:=1 to 9 do
  begin
    numArr[i]:=random(21)-10;
    write(numArr[i],'|');
  end;
  writeln();
  n:=random(9)+1;
  writeln('Случайное значение N: ',n);
  shiftArr(numArr,i,n);
  for i:=1 to 9 do
    write(numArr[i],'|');
  readln();
end. 
vedro-compota's picture

procedure shiftArr(var promArr: newArr; j,k:integer)

-- переменную j в процедуру передавать не нужно - объявите ее как локальную

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

program project1;

type newArr = array [1..9] of integer;
var numArr: newArr;
    i,n: integer;

procedure shiftArr(var promArr: newArr; k:integer);
var j:integer;
begin
  for j:=k to 8 do
    promArr[j]:=promArr[j+1];
  promArr[9]:=0;
end;

begin
  randomize;
  for i:=1 to 9 do
  begin
    numArr[i]:=random(21)-10;
    write(numArr[i],'|');
  end;
  writeln();
  n:=random(9)+1;
  writeln('Случайное значение N: ',n);
  shiftArr(numArr,n);
  for i:=1 to 9 do
    write(numArr[i],'|');
  readln();
end.   
vedro-compota's picture

засчитано

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