В одномерных массивах А[1..N] и B[1..M] определить минимальные значения. Циклически сдвинуть числа так, чтобы минимальное встало в конец каждого массива — Pascal(Паскаль)

Uses
  CRT;

Const
  nmax = 100;

type
  mas = array [1 .. nmax] of integer;

Var
  a, b: mas;
  i, n, imin, m, imin2: integer;

procedure sdvig(Var l: mas; iimin: integer; k: byte);
Var
  r, j: integer;
begin
  if iimin <> k then
  begin
    repeat
    begin
      inc(iimin);
      for j := k downto 1 do
        if (j = k) then
          r := l[k]
        else
          l[j + 1] := l[j];
      l[1] := r;
    end;
    until iimin = k;
  end;
end;

procedure rez(Var l: mas; k: byte; c: char);
begin
  writeln('Массив ', c, ' после сдвига: ');
  for i := 1 to k do
    write(l[i]:5);
end;

begin
  ClrScr;
  repeat
    write('N: ');
    readln(n);
  until n in [1 .. nmax];
  imin := 1;
  writeln('Исходный массив A: ');
  randomize;
  for i := 1 to n do
  begin
    a[i] := random(10) - 3;
    write(a[i]:5);
    if a[i] < a[imin] then
      imin := i;
  end;
  writeln;
  sdvig(a, imin, n);
  rez(a, n, 'A');
  writeln;
  repeat
    write('M: ');
    readln(m);
  until m in [1 .. nmax];
  imin2 := 1;
  writeln('Исходный массив B: ');
  for i := 1 to m do
  begin
    b[i] := random(10) - 3;
    write(b[i]:5);
    if b[i] < b[imin2] then
      imin2 := i;
  end;
  writeln;
  sdvig(b, imin2, m);
  rez(b, m, 'B');
  readln

end.

Leave a Comment

36 − = 27