Дана последовательность натуральных чисел {Aj}j=1…n (n меньше или равна 10000). Удалить из последовательности числа, содержащие хотя бы пару одинаковых цифр — Pascal(Паскаль)

Среди оставшихся продублировать числа, содержащие цифру 5.

program PascalGuru;

uses crt;

label 1, 2;

var
  A: array [1 .. 10000] of integer;
  i, j, l, n, temp, ins: integer;
  s: string;
  b: boolean;

begin
  write('N= ');
  readln(n);

  writeln('Vvedite elementy massiva A: ');
  for j := 1 to n do
  begin
    write('A[', j, ']=');
    readln(A[j]);
  end;

  clrscr;
  writeln('Vot vvedennyi vami massiv A: ');
  for j := 1 to n do
    write(A[j]:4, ' ');

  { Удалить из последовательности числа, содержащие хотя бы пару одинаковых цифр }
1:
  for j := 1 to n do
  begin
    str(A[j], s);
    b := false;
    for i := 1 to length(s) do
      for l := 1 to length(s) do
        if i <> l then
          if s[i] = s[l] then
            b := true;

    if not b then
      continue;

    For i := j + 1 to n do
      A[i - 1] := A[i];
    dec(n);
    goto 1;

  end;
  { ---конец удаления--- }

  { продублировать числа, содержащие цифру 5 }
  ins := 1;
2:
  for j := ins to n do
  begin
    str(A[j], s);
    if pos('5', s) = 0 then
      continue;
    temp := A[j];
    For i := n downto j + 1 do
      A[i + 1] := A[i];
    A[j + 1] := temp;
    inc(n);
    ins := j + 2;
    goto 2;
  end;
  { ---конец дублирования--- }

  writeln;
  writeln;
  writeln('Vot obnovlennyi massiv A: ');
  for j := 1 to n do
    write(A[j]:4, ' ');

  readln;

Leave a Comment

76 − = 75