Дана строка. Удалить из нее все последовательности цифр начинающихся с 1 — Pascal(Паскаль)

uses crt;
var s:string;
    i,j:byte;
begin
clrscr;
writeln('Введите строку, содержащую последовательности цифр:');
readln(s);
i:=1;
while i<=length(s) do
if s[i]='1' then
while (s[i] in ['0'..'9'])and(i<=length(s)) do
delete(s,i,1)
else inc(i);
write(s);
readln
end.

Следующий вариант

program Project1;
 
const
  (*Множество цифр.*)
  D = ['0'..'9'];
var
  S1, S2 : String;
  i, j, Len, Pos1 : Integer;
begin
  repeat
    Writeln('Введите строку:');
    Readln(S1);
 
    Len := Length(S1);
    SetLength(S2, Len);
    Pos1 := 0;
    j := 0;
    for i := 1 to Len do begin
      (*Переписываем знаки, отличные от цифр.*)
      if not (S1[i] in D) then begin
        Inc(j);
        S2[j] := S1[i];
        Continue;
      end;
      (*Отслеживаем начало последовательности.*)
      if S1[i] = '1' then Pos1 := i;
      (*Если цифра вне последовательности - переписываем её.*)
      if Pos1 = 0 then begin
        Inc(j);
        S2[j] := S1[i];
      end;
      (*Отслеживаем конец последовательности.*)
      if (i = Len) or (not (S1[i + 1] in D) ) then begin
        Pos1 := 0;
      end;
    end;
 
    (*Коррективуем размер строки в соответствие с количеством добавленных
    в неё символов.*)
    SetLength(S2, j);
 
    Writeln('Строка после обработки:');
    Writeln(S2);
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S1);
  until S1 <> '';
end.

Leave a Comment

86 + = 88