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

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

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

> Кодирование длин серий . Текстовый файл.
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


mea culpa
*****

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

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


Ну тебе надо получить 3 параметра, делаешь что-то типа (пишу тут):

var c,infile,outfile:string;
begin
c:=paramstr[1];
infile:=paramstr[2];
outfile:=paramstr[3];
if uppercase©='-D' then unpcking else packing;
end.


Естественно, надо оформить коды сжатия и разжатия в процедуры packing и unpacking или даже обойтись без процедур.

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 1.05.2024 1:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name