Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 6
1

Процедура сжатия исходной строки

18.12.2013, 13:32. Показов 667. Ответов 4
Метки нет (Все метки)

составить процедуру сжатия исходной последовательности символов каждая подпоследовательность составленная из нескольких вхождений одного и того же символа заменяется на текст х(к) где х-символ, а к-количество вхождений х в исх последовательность
например строка dddddyyy примет вид d(5)y(3)
помогите написать, сам пытался,но что-то не так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var
s:string;
procedure p(var s:string);
var i,k:integer;
x:char;
begin
k:=0;
for i:=1 to length(s) do begin
   x:=s[i];
   while s[i]=x do 
                   k:=k+1;
                   
                  
   delete(s,i-k,k-1);
   insert(')',s,i);
   insert('k',s,i);
   insert('(',s,i);
   end;end;
begin
readln(s);
p(s);
write(s);
readln;
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2013, 13:32
Ответы с готовыми решениями:

Преобразовать строку так, чтобы сначала в ней шли все цифры исходной строки, а потом – все буквы исходной строки, но в обратном порядке
1)Даны сведения о 8 фильмах: название, режиссер, страна, год выпуска, стоимость(расходы на выпуск),...

Строки. Вывести подстроку, расположенную между первым и последним пробелом исходной строки
Дана строка, содержащая по крайней мере один символ пробела. Вывести подстроку, расположенную между...

Из строки сформировать новую строку, содержащую символы цифр исходной строки
Из введенной символьной строки выбрать все цифры и сформировать другую строку из этих цифр,...

Первую подходящую цифру исходной строки добавить в конец же строки
помогите пожалуйста со вторым методом!!! Объект 1: поле - строка; методы: является ли первая...

4
1643 / 1072 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
18.12.2013, 15:06 2
Т.к. Вы удаляете символы из строки (т.е. сокращая ее), то ближе к концу цикла происходит обращение к элементу строки, который уже не входит в саму строку, т.е. символы при удалении "сдвигаются" влево.
Попробуйте использовать цикл в таком виде:
Pascal
1
for i:=Length(s) downto 1 do
Добавлено через 5 минут
Конечно потребуется небольшое изменение алгоритма и математики работы.
0
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 6
18.12.2013, 18:37  [ТС] 3
все ровно програма не работает у меня(
как в строку вставить значение переменной к?
0
1643 / 1072 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
18.12.2013, 21:41 4
Цитата Сообщение от almost777 Посмотреть сообщение
как в строку вставить значение переменной к?
У Вас вместо значения переменной k вставляется символ 'k', а чтобы вставить именно значение необходимо преобразовать число в строку.

Добавлено через 15 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Var
  S : String;
 
Function IntToS(A : Longint) : String;
Var AA : String;
Begin
  Str(A,AA);
  IntToS:=AA;
End;
 
Procedure p(Var ss : String);
Var i,k : Integer;
    Ch  : Char;
Begin
  k:=Length(ss);
  For i:=Length(ss)-1 downto 1 do
    If ss[i]<>ss[k] then
      If k-i>1 then
      Begin
        Ch:=ss[k];
        Delete(ss,i+1,k-i);
        Insert(Ch+'('+IntToS(k-i)+')',ss,i+1);
        k:=i;
      End
       else k:=i;
   If k<>1 then
   Begin
     Ch:=ss[k];
     Delete(ss,1,k);
     Insert(Ch+'('+IntToS(k)+')',ss,1);
   End;
end;
 
Begin
  Readln(S);
  { S:='aabcdddddxyyyzz'; }
  p(S);
  Write(S);
  Readln;
End.
0
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 6
18.12.2013, 21:46  [ТС] 5
большое спасибо, буду разбираться
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2013, 21:46

Составить программу «сжатия» исходной строки символов
3. Составить программу «сжатия» исходной строки симво- лов: каждая подстрока, состоящая из...

Формирование строки из исходной путем заданного числа повторений исходной строки (TASM)
Задание: Написать программу формирования строки из исходной путем заданного числа повторений...

Составить процедуру сжатия исходной последовательности символов
составить процедуру сжатия исходной последовательности символов: каждая подпоследовательность...

Составить процедуру сжатия исходной последовательности символов
составить процедуру сжатия исходной последовательности символов: каждая подпоследовательность...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.