Дано натуральное число n символы s1,…, Sn Преобразовать последовательность s1,…, sn удалив из каждой группы идущих подряд цифр, в которой более двух цифр, все цифры, начиная с третьей- Pascal(Паскаль)

uses crt;

const
  nmax = 1000;
  cf = ['0' .. '9'];

var
  n, i, j: integer;
  s: array [1 .. nmax] of char;

begin
  clrscr;
  repeat
    write('Размер последовательности от 3 до ', nmax, ' n=');
    readln(n);
  until (n > 2) and (n <= nmax);
  writeln('Введите ', n, ' символов, в том числе группы цифр:');
  for i := 1 to n do
  begin
    write('s[', i, ']=');
    readln(s[i]);
  end;
  clrscr;
  writeln('Исходная последовательность:');
  for i := 1 to n do
    write(s[i]);
  writeln;
  writeln;
  i := 3;
  while i < n do { проверим до предпоследнего символа }
    if (s[i - 2] in cf) and (s[i - 1] in cf) and (s[i] in cf) then
    begin
      while (i < n) and (s[i] in cf) do
      begin
        for j := i to n - 1 do
          s[j] := s[j + 1];
        n := n - 1;
      end;
    end
    else
      i := i + 1;
  if (s[n - 2] in cf) and (s[n - 1] in cf) and (s[n] in cf) then
    n := n - 1; { последний символ }
  writeln('Удаление лишних цифр:');
  for i := 1 to n do
    write(s[i]);
  readln

end.

Leave a Comment

+ 36 = 42