IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Кодирование длин серий . Текстовый файл.
lopata
сообщение 11.04.2010 18:02
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

Репутация: -  0  +


Помогите пожалуйста разобраться как делать.

Кодирование длин серий (Run-length encoding, RLE) - простая техника сжатия,при которой каждая последовательность знаков, которые состоят более чем из 2 одинаквых знаков, кодируется по первому знаку и длине последовательности.
Реализуйте простой вариант этого способа в форме программы фильта, которая кодирует и снова декодирует текстовые файлы,в которых содержатся только строчные и прописные буквы , знаки препинания и пробелы (но не цифры).Ваша программа должна предлогать следующие возможности вызова из камандной строки (метасимболы[...] и ...|... стоят для опций или альтернатив):
RLE [ -c | -d ] [inFile] [outFile]

Значение параметров:
-c входной файл нужно кодировать (значение по умолчанию),
-d входной файл нужно декодировать,
inFile имя входного файла, иначе стандартный ввод (input)
outFile имя выходного файла, иначе стандартный вывод (output).

Пример:
Изображение


Файлы я пока не трогала...Попыталась просто кодировать. В переменную ch сохраняю символ, если он равен следующему - увеличиваю счетчик, если нет - скидываю в строку str2 и текущий символ сохраняю снова в ch и так далее. Не работает..:

var x, str1, str2, ch,countstr : string;
i, k, count : integer;
begin
countstr:= '';
ch := '';
str2 := '';
count := 0;
Readln(str1);
for i := 1 to Length(str1) do begin
if i=1 then begin
ch:=str1[1];
count:= 1;
end
else begin
if ch= str1[i] then
inc(count)
else begin
if count > 2 then begin
Str(count,countstr);
str2:= countstr+ch
end
else begin
for k := 1 to count do
str2 := str2+ch;
ch := str1[i];
count := 1;
end;
end;
end;
end;
end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Client
сообщение 11.04.2010 22:15
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


вариант что в коде - 10 "с" и 4 "d"
Цитата
А если задать abb3c4cEnd, то вообще не получается.
То 7 "с" и получается


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
lopata   Кодирование длин серий . Текстовый файл.   11.04.2010 18:02
volvo   А если вот так попробовать: var str1, str2, ch, ...   11.04.2010 18:20
lopata   Спасибо) поняла   11.04.2010 18:31
lopata   Не получается с декодированием. Не могу понять поч...   11.04.2010 19:55
volvo   Эту строку исправляй немедленно! :) Иначе она ...   11.04.2010 20:16
lopata   Ок) Насчет последнего исправления тоже неверно. Я ...   11.04.2010 20:21
Client   uses crt; var str1, str2, ch, countstr: string; ...   11.04.2010 20:56
lopata   Спасибо, Client. Просто обидно, что у меня никогда...   11.04.2010 21:18
Client   Узнаешь кодvar str1 , str2, ch, substr,numberstr: ...   11.04.2010 21:53
lopata   Хм..но работает неверно. Вадает результат abbccccc...   11.04.2010 22:09
Client   вариант что в коде - 10 "с" и 4 "d...   11.04.2010 22:15
lopata   Сорри. Имела в виду abb3c4dEnd. Походу я что-то не...   11.04.2010 22:21
volvo   В чем проблема? Что ты ожидала получить?   11.04.2010 22:46
lopata   Снова извините. Переклинило.   11.04.2010 22:54
lopata   Не мог бы кто-нибудь объяснить про командную строк...   12.04.2010 18:06
TarasBer   ParamCount - число параметров командной строки. Pa...   13.04.2010 9:07
lopata   Честно говоря вообще не понимаю как это должно раб...   13.04.2010 20:27
Unconnected   Ну тебе надо получить 3 параметра, делаешь что-то ...   13.04.2010 22:06
Гость   Естественно, надо оформить коды сжатия и разжатия...   13.04.2010 22:23
Client   это значит что надо выполнить выбранное действие   13.04.2010 22:34
TarasBer   Что такое командная строка - знаешь? Говоря на пал...   14.04.2010 9:26
lopata   Спасибо. Стало немного понятней. А можешь привести...   14.04.2010 23:25
TarasBer   Ну например, программа возводит одно число в степе...   15.04.2010 9:53
lopata   Spasibo ogromnoje.   15.04.2010 12:29


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 16:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"