Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 19.01.2015, 15:04   #1 (permalink)
ИриSka-147
Новичок
 
Регистрация: 18.01.2015
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль. Сжатие строки

Код:
 
 когда ввожу 1 элемент,то задача не идет...как исправить??
 program Task464;
 uses crt;
 var
 s: string;
 procedure RAR(var s: string);
 var
 s1, s2: string;
 i, j, k: integer;
 begin
 s1:='';
 i := 1;
 while i <= length(s)-1 do begin
 if s[i] = s[i + 1] then begin
 k:= 1;
 j:= i;
 repeat
 k:= k+1;
 j:= j+1;
 
 until s[j]<>s[j+1];
 str(k, s2);
 s1:= s1 + s[i] + '('+ s2 +')';
 i:= i + k;
 end
 else begin
 s1:= s1 + s[i];
 i:=i+1;
 end;
 end;
 if s[length(s)] <> s[length(s) - 1] then
 s1:= s1 + s[length(s)];
 s:=s1;
 end;
 begin
 write('Введите строку: ');
 read(s);
 RAR(s);
 write('Сжатая строка: ', s);
 end.
ИриSka-147 вне форума   Ответить с цитированием

Старый 19.01.2015, 15:04
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Довольно частая проблема, нашлись похожие темы

Паскаль, строки
Паскаль, строки

Старый 19.01.2015, 15:09   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Прежде всего - будьте так любезны выложить формулировку задачи.

И еще - в соответствии с нашими Правилами, именования тем типа "Помогите!!", "Нужна помощь!", "Help!!!", "Помогите, пожалуйста" и т.п. НЕ ДОПУСКАЮТСЯ.
Vladimir_S вне форума   Ответить с цитированием
Старый 19.01.2015, 15:18   #3 (permalink)
ИриSka-147
Новичок
 
Регистрация: 18.01.2015
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Составить процедуру "сжатия" исходной последовательности символов: каждая подпоследовательность, состоящая из нескольких вхождений одного и того же символа, заменяется на текст х(к), где х - символ, к - строка, являющаяся записью числа вхождений символа х в исходную последовательность.
ИриSka-147 вне форума   Ответить с цитированием
Старый 19.01.2015, 15:28   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Спасибо. И еще, если не затруднит, - подробнее о проблеме. Что значит "ввожу 1 элемент"? Первый элемент? Или вся строка состоит из одного символа? Расшифруйте, пожалуйста.
Vladimir_S вне форума   Ответить с цитированием
Старый 19.01.2015, 15:33   #5 (permalink)
ИриSka-147
Новичок
 
Регистрация: 18.01.2015
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

вся строка состоит из 1го символа
ИриSka-147 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 19.01.2015, 15:46   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Хорошо, попробую выбрать время и повозиться с программой. Как получится.
Vladimir_S вне форума   Ответить с цитированием
Старый 19.01.2015, 16:03   #7 (permalink)
ИриSka-147
Новичок
 
Регистрация: 18.01.2015
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

буду очень благодарна
ИриSka-147 вне форума   Ответить с цитированием
Старый 19.01.2015, 16:28   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Так, ну погонял я Вашу программу.
Всё там абсолютно правильно, и по одному символу работает прекрасно, кроме одной мелочи.
Запомните на будущее:
СТРОКОВАЯ ПЕРЕМЕННАЯ СЧИТЫВАЕТСЯ ТОЛЬКО ОПЕРАТОРОМ "Readln", НИКАКИХ "Read"!!!
А потому исправьте четвертую снизу строку с "read(s);" на "readln(s);" - и будет Вам счастье!
Vladimir_S вне форума   Ответить с цитированием
Старый 19.01.2015, 16:57   #9 (permalink)
ИриSka-147
Новичок
 
Регистрация: 18.01.2015
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

исправила ,и нет мне счастья
ИриSka-147 вне форума   Ответить с цитированием
Старый 19.01.2015, 17:09   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ИриSka-147 Посмотреть сообщение
исправила ,и нет мне счастья
Так.
Ну либо Вы не то исправили, либо у Вас какой-то глючный Паскаль.
Вот что сделал я.
1. Программа:
Код:
Uses CRT;
Var
 s:string;

Procedure RAR(var s:string);
var
 s1,s2: string;
 i,j,k: integer;
begin
 s1:='';
 i:=1;
 while i<=length(s)-1 do
  begin
   if s[i]=s[i+1] then
    begin
     k:=1;
     j:=i;
     repeat
      k:=k+1;
      j:=j+1;
     until s[j]<>s[j+1];
     str(k,s2);
     s1:=s1+s[i]+'('+s2+')';
     i:=i+k;
    end
   else
    begin
     s1:=s1+s[i];
     i:=i+1;
    end;
  end;
 if s[length(s)]<>s[length(s) - 1] then s1:=s1+s[length(s)];
 s:=s1;
end;

Begin
 write('Enter the string: ');
 Readln(s);
 RAR(s);
 write('Compressed string: ', s);
 ReadKey
End.
2. Результаты:
aa01.jpg
aa02.jpg

Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:42.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.