Преобразовать последовательность, удалив группы идущих подряд цифр
Категория: Delphi/Pascal
2011-09-16 22:34:49
Даны символы 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.
Поделиться: