Консультация № 170397
13.07.2009, 12:33
0.00 руб.
0 1 1
Здравствуйте, Уважаемые эксперты, помогите пожалуйста в решении задачи на Pascal.

Составить прцедуру сжатия исходной последовательности символов:
каждая последовательность, состоящая из нескольких вхождений одного и
того же символа заменяется на текст x(k), где x - символ,а k - строка,
являющаяся записью числа вхождений в исходную последовательность.

Ecть готовая программа в формате .exe, а нужен сам текст программы. Кто знает как написать, помогите пожалуйста.

http://depositfiles.com/files/9gax5x0cq

Обсуждение

давно
Профессор
401888
1232
13.07.2009, 13:25
общий
это ответ
Здравствуйте, andrey_volkov!
В Вашем экзешнике программа по сути ничего не делает, 2 раза выводит одну и ту же строку. Решение в приложении.

Приложение:
uses crt;
procedure Squeeze(var s:string);{собственно процедура}
var s1:string;{вспомогательная строка}
i,j,k:byte;{счетчики}
x:char;{символ}
begin
for i:=length(s) downto 1 do{идем по строке с конца}
if s[i]=s[i-1] then{если рядом одинаковые символы}
begin
x:=s[i];{запоминаем его}
k:=1;{считаем}
j:=i;{запоминаем позицию}
while s[j]=s[j-1] do{идем дальше пока одинаковые}
begin
k:=k+1;{считаем}
j:=j-1;{идем влево}
end;
str(k,s1);{кончились, преобразуем количество в строку}
s1:=x+'('+s1+')';{составляем строку для вставки по условию}
insert(s1,s,i-k+1);{вставляем перед цепочкой символов}
delete(s,i-k+1+length(s1),k);{цепочку удаляем}
end;
write(s);{выводим измененную строку}
readln
end;
var str:string;
begin
clrscr;
writeln('Строка:');
readln(str);
Squeeze(str);
end.
Форма ответа