Преобразовать последовательность, удалив группы идущих подряд цифр

Даны символы S1, S2... Известно, что символ S1 отличен от пробела, и что среди S2, S3 ... имеется хотя бы один пробел. Рассматриваются S1,... , Sn-символы, предшествующие первому пробелу(n зарание неизвестно). Преобразовать последовательность S1,... , Sn, удалив из каждой группы идущих подряд цифр, в которой более двух цифр, и которой предшествует точка. Все цифры, начиная с третьей (например, А*В+0.1973-1.1 преобразуется в А*В+0.19-1.1).

code: #pascal
var
  S,S1: string;
  n,i: integer;
begin
  readln(S);
  n:=pos(' ',S);
  if n > 0 then S:=copy(S,1,n-1);
  S1:='';
  repeat
    n:=pos('.',S);
    if n = 0 then break;
    i:=n+1;
    while S[i] in ['0'..'9'] do i:=i+1;
    i:=i-n-1;
    if i > 2 then delete(S,n+3,i-2);
    S1:=S1+copy(S,1,n+3);
    delete(S,1,n+3);
  until false;
  S1:=S1+S;
  writeln(S1);
  readln;
end.
Поделиться:

Похожие статьи: