Урок 15 (Решенная задача 6)

Урок 15 (Решенная задача 6)

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

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

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

|1|4|5|4|7|-8|-9|0|
var a : array[1..9] of integer;
    i, N :integer;
begin
  randomize();
  for i:= 1 to 9 do
    begin
      a[i] := random(100) - 50;
      writeln(a[i]);
    end;
  writeln('vvedite cislo N ot 1 do 9');
  readln(N);
  a[N] := 0;
  writeln(a[N]);
  writeln();
  for i:= 1 to 9 do
  if (i <> N) then
   begin
     writeln(a[i]);
     if (i = 9) then
     writeln(0);
   end;

end.

vedro-compota's picture

Добавьте ещё вариант: перенесите операцию сдвига в подпрограмму

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

Romakip's picture

var a : array[1..9] of integer;
    i, N :integer;

function ru36(x: array of integer): integer;
   begin
    a[N] := 0;
    writeln(a[N]);
    writeln();
    for i:= 1 to 9 do
    if (i <> N) then
    begin
     writeln(a[i]);
     if (i = 9) then
     writeln(0);
    end;
   end;
begin
  randomize();
  for i:= 1 to 9 do
    begin
      a[i] := random(100) - 50;
      writeln(a[i]);
    end;
  writeln('vvedite cislo N ot 1 do 9');
  readln(N);
  ru36(a);

end.
vedro-compota's picture

  1. функция должна возвращать массив
  2. функция не должна работать с глобальной переменной
  3. две распечатки массива - до вызова функции, и после получения результата из неё

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

Romakip's picture

type
  Myarr = array[1..9] of integer;

var a : Myarr;
    i, N : integer;

function ru36(x: Myarr; g, M: integer): Myarr;
   begin
    writeln();
    for g:= 1 to 9 do
    if (g <> M) then
    begin
     writeln(a[g]);
     if (g = 9) then
     writeln(0);
    end;
    result := x;
   end;
begin
  randomize();
  for i:= 1 to 9 do
    begin
      a[i] := random(100) - 50;
      writeln(a[i]);
    end;
  N := random(9) - -1;
  writeln('Sluhaunoe cislo ravno :', N);
  ru36(a, i, N);

end.
16
45
-50
-31
8
-15
-24
-4
-7
Sluhaunoe cislo ravno :4

16
45
-50
8
-15
-24
-4
-7
0

Romakip's picture

type
  Myarr = array[1..9] of integer;

var a : Myarr;
    i, N : integer;

procedure ru36(x: Myarr; M: integer);
var g: integer;
begin
  writeln();
  for g := M to high(x) do
  begin
    x[g] := x[g+1];
    if (g = 9) then
      x[g] := 0;
  end;
  g := 0;
  for g := 1 to high(x) do
    writeln(x[g]);
end;

begin
  randomize();
  for i:= 1 to 9 do
  begin
    a[i] := random(100) - 50;
    writeln(a[i]);
  end;
  N := random(9) - -1;
  writeln('Sluhaunoe cislo ravno :', N);
  ru36(a, N);
end.
vedro-compota's picture

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

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

Romakip's picture

type
  Myarr = array[1..9] of integer;

var a : Myarr;
    i, N : integer;

procedure rand(var mas : Myarr);
var k : integer;
begin
  randomize();
  for k:= 1 to 9 do
    mas[k] := random(100) - 50;
end;

procedure sdvig(var x: Myarr; M: integer);
var g: integer;
begin
  writeln();
  for g := M to high(x) do
  begin
    x[g] := x[g+1];
    if (g = 9) then
      x[g] := 0;
  end;
end;

begin
  rand(a);
  for i := 1 to high(a) do
    writeln(a[i]);
  N := random(9) - -1;
  writeln('Sluhaunoe cislo ravno :', N);
  sdvig(a, N);
  i := 0;
  for i := 1 to high(a) do
    writeln(a[i]);
end.