Помощь - Поиск - Пользователи - Календарь
Полная версия: Программа архиватор- разархиватор текстовых файлов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи > Задачи на заказ
blackhard
Задача такая:

Программа архиватор- разархиватор текстовых файлов на русском языке ( Применяются только буквы русского алфавита, знаки припенания и пробелы, сжатие должно быть максимальным).

Примечание: Мне препод сказал, что как-то надо сделать так, чтобы на символ приходилось не 8 бит, а 5... можно 6. ( Сказал надо использовать SHL и SHR, а я только школу закончил, полтора месяца отучился, что такое бинарные операции и что с ними делать не представляю).заплачу 150-200р.
Malice
Опиши подробней как вводить имена файлов - с клавиатуры, с командной строки или может интерфейс красивый нужен.. С командной строкой сделаю за час, оплата на счет форума 150р (курс не знаю, сорри).
blackhard
Цитата(Malice @ 29.10.2007 21:04) *

Опиши подробней как вводить имена файлов - с клавиатуры, с командной строки или может интерфейс красивый нужен.. С командной строкой сделаю за час, оплата на счет форума 150р (курс не знаю, сорри).

с командной строки.а может еще за 150 вот это сделаеш :исходная информация:текст на русском языке и значение длинны отформатированной строки.
задание: переформатировать текст так чтобы длинна любой строки была равна заданной величине.
Выравнять текст по правому краю равномерным увеличением длины пробелов.(длины каждых 2х пробелов между словами не должны отличаться больше чем на единицу.помогите нужно как можно быстрее.
и какой щет форума?
Tan
Счета форума
blackhard
Цитата(Tan @ 29.10.2007 23:27) *

обе задачи сделаете?
Lapp
( от Администрации: )

Цитата(blackhard @ 29.10.2007 23:32) *

обе задачи сделаете?

Нет. За вторую задачу отдельная оплата (столько же).
Malice, возьмешься?

Еще вот, что:
Цитата
сжатие должно быть максимальным

Этого никто и никогда в общем случае не сможет гарантировать.
Так что просьба не кивать потом на это, и не говорить, что условие не выполнены..
blackhard
Цитата(Lapp @ 29.10.2007 23:47) *

( от Администрации: )
Нет. За вторую задачу отдельная оплата (столько же).
Malice, возьмешься?

Еще вот, что:

Этого никто и никогда в общем случае не сможет гарантировать.
Так что просьба не кивать потом на это, и не говорить, что условие не выполнены..

хорошо 300р на счет когда будет готово напиши.токо можно 2ю задачу сделать в 2х вариантах 1)если слово в тексте больше заданного значения строки выводим ошибку и повторяем ввод значения строки 2)если слово в тексте больше заданного значения строки выполняем перенос.
Malice
Цитата(Lapp @ 29.10.2007 22:47) *

( от Администрации: )
Нет. За вторую задачу отдельная оплата (столько же).
Malice, возьмешься?

Не, вторую не интересно даже smile.gif Просто люблю я задачки битовые, самому интересно.. И еще ps - я сделаю, если косяк - исправлю, но объяснить не смогу, если что. Для этого надо было тему в задачах не бросать ;)
blackhard
Цитата(Malice @ 30.10.2007 0:15) *

Не, вторую не интересно даже smile.gif Просто люблю я задачки битовые, самому интересно.. И еще ps - я сделаю, если косяк - исправлю, но объяснить не смогу, если что. Для этого надо было тему в задачах не бросать ;)

ну ктонить сделайте и вторую плиз очень надо
Lapp
Цитата(blackhard @ 30.10.2007 0:45) *

ну ктонить сделайте и вторую плиз очень надо

Хорошо, я сделаю
завтра к вечеру
платеж делай один - 300 р
blackhard
Цитата(Lapp @ 30.10.2007 1:39) *

Хорошо, я сделаю
завтра к вечеру
платеж делай один - 300 р

хорошо большое спасибо
Lapp
Оба задания готовы.
Переводишь деньги на счет и получаешь тексты. Экзешники я могу тебе уже выслал на личку.

Про форматирование - только один вариант, с делением слишком длинного слова на куски (то есть перенос, если хочешь, только без "-"). Второй вариант - извини, другая задача. Могу доделать за половинную плату, 75р. Но лучше сам разберись. Можешь спрашивать в других разделах.
blackhard
Цитата(Lapp @ 30.10.2007 12:13) *

Оба задания готовы.
Переводишь деньги на счет и получаешь тексты. Экзешники я могу тебе уже выслал на личку.

Про форматирование - только один вариант, с делением слишком длинного слова на куски (то есть перенос, если хочешь, только без "-"). Второй вариант - извини, другая задача. Могу доделать за половинную плату, 75р. Но лучше сам разберись. Можешь спрашивать в других разделах.
перевод произвел.жду исходники
Altair
Перевод получен

Добавлено через 5 мин.
Исходники отправлены
blackhard
Цитата(Malice @ 29.10.2007 20:04) *

Опиши подробней как вводить имена файлов - с клавиатуры, с командной строки или может интерфейс красивый нужен.. С командной строкой сделаю за час, оплата на счет форума 150р (курс не знаю, сорри).

по поводу архиватора:как можно переделать в задаче ввод вывод данных а то все время выдает siyntex error
Malice
Такое сообщение выводится если неправильно заданы параметры командной строки. Как ты хочешь переделать ?
blackhard
Цитата(Malice @ 7.11.2007 17:13) *

Такое сообщение выводится если неправильно заданы параметры командной строки. Как ты хочешь переделать ?

ну просто чтоб работал с заданными файлами
Malice
Цитата(blackhard @ 7.11.2007 17:56) *

ну просто чтоб работал с заданными файлами
Не знаю какая версия сейчас у тебя, последняя ли.. Но вот такое должно быть сейчас:
begin
if paramcount<>3 then begin
writeln ('Syntax: [options] from.txt to.txt');
writeln ('options: -c = CODE, -d = DECODE');
writeln ('from.txt - source file');
writeln ('to.txt - dest file'); readln; halt;
end;
if paramstr (1)='-c' then
code (paramstr(2),paramstr(3),true)
else if paramstr (1)='-d' then code (paramstr(2),paramstr(3),false) else
writeln ('Syntax error..');
end.

поменяй это на:
begin
code ('text.txt','arc.arc',true);
code ('arc.arc','unArc.txt',false);
end.

Будет паковать и следом распаковывать без вопросов.
Lapp
Цитата(blackhard @ 7.11.2007 17:56) *

ну просто чтоб работал с заданными файлами

Напиши, как ты запускаешь программу. В среде или саму по себе? Задаешь ли ты параметры? если да, то как?
Желательно привести дословный пример.
blackhard
Цитата(Lapp @ 8.11.2007 1:51) *

Напиши, как ты запускаешь программу. В среде или саму по себе? Задаешь ли ты параметры? если да, то как?
Желательно привести дословный пример.

чето при разорхивации теряются буквы
Program arch;
uses crt;
procedure code (a1,a2:string; k:boolean);
const
{ђ бЄ®¬Ґ­вЁа®ў вм «оЎ®© Ё§ Ї®­а ўЁdўиЁебп: }
al_:set of char=['Ђ'..'џ',' '..'Ї','а'..'п',' ','.',',',#13,#10,';','!']; {‘ Ў®«миЁ¬Ё ЎгЄў ¬Ё, ­® 7bit}
{ al_:set of char=[' '..'Ї','а'..'п',' ','.',',',#13,#10,';','!']; { ЎҐ§ Ў®«миЁе, ­® 6}
{ al_:set of char=[' '..'Ї','а'..'п',' ']; { в®«мЄ® ¬ «Ґ­мЄЁҐ 5 bit}
{ al_:set of char=['0'..'9','A'..'F']; { hex smile.gif, «ҐЈЄ® Їа®ўҐапвм}
var
al,al2:array[byte] of byte;
c:char;
n,z,ln,b:byte;
w:word;
f1,f2: file of byte;
begin
b:=255; ln:=0;
for c:=#0 to #255 do {§ Јаг¦ Ґ¬  «д ўЁв Ё§ ¬­®¦Ґбвў }
if c in al_ then begin
inc (b); al[ord©]:=b; al2[b]:=ord©;
end
else al[ord©]:=255;
while b>0 do begin inc (ln); b:=b div 2; end; {‘зЁв Ґ¬ Є®«ў® ЎЁв}
Writeln ('Using ',ln, ' bit on char..');
if k then z:=8 else begin z:=ln; ln:=8; end;
{$I-} assign (f1,a1); reset (f1); {$I+}
if ioresult<>0 then begin writeln ('File error..');
end;
{$I-} assign (f2,a2); rewrite (f2); {$I+}
if ioresult<>0 then begin writeln ('File error..');
end;
n:=0; w:=0;
repeat
read (f1,b); {зЁв Ґ¬ Ї®Ў ©в­®}

вот че выходит
Код
е конено поай е иел казал.
оледний аз пивел на  обой в о зал.
адами леп м оим  ен,  гн
зава азлеим,  обой ко кда.
зава азлеим пен из гнезда.
веи на кла, може б, олко еез года.

Malice
Да простит меня великий модератор, прикреплю архивчик с прогой, откомпиленной прогой, исходный файлом и start.bat файлом (который надо запустить, чтоб увидеть code/decode если что [результат кодировки в 2.txt, обратно в 3.txt, так, на всякий случай]), но ответить подробно я не в состоянии сейчас.. Не удивлюсь, что прога запускалась в том же виде (кодировке), что и прекреплена smile.gif Разница в конечном и исходном файлах должна объяснятся неполнотой используемого алфавита.
Нажмите для просмотра прикрепленного файла
blackhard
Цитата(blackhard @ 8.11.2007 19:14) *

чето при разорхивации теряются буквы
Program arch;
uses crt;
procedure code (a1,a2:string; k:boolean);
const
{ђ бЄ®¬Ґ­вЁа®ў вм «оЎ®© Ё§ Ї®­а ўЁdўиЁебп: }
al_:set of char=['Ђ'..'џ',' '..'Ї','а'..'п',' ','.',',',#13,#10,';','!']; {‘ Ў®«миЁ¬Ё ЎгЄў ¬Ё, ­® 7bit}
{ al_:set of char=[' '..'Ї','а'..'п',' ','.',',',#13,#10,';','!']; { ЎҐ§ Ў®«миЁе, ­® 6}
{ al_:set of char=[' '..'Ї','а'..'п',' ']; { в®«мЄ® ¬ «Ґ­мЄЁҐ 5 bit}
{ al_:set of char=['0'..'9','A'..'F']; { hex smile.gif, «ҐЈЄ® Їа®ўҐапвм}
var
al,al2:array[byte] of byte;
c:char;
n,z,ln,b:byte;
w:word;
f1,f2: file of byte;
begin
b:=255; ln:=0;
for c:=#0 to #255 do {§ Јаг¦ Ґ¬  «д ўЁв Ё§ ¬­®¦Ґбвў }
if c in al_ then begin
inc (b); al[ord©]:=b; al2[b]:=ord©;
end
else al[ord©]:=255;
while b>0 do begin inc (ln); b:=b div 2; end; {‘зЁв Ґ¬ Є®«ў® ЎЁв}
Writeln ('Using ',ln, ' bit on char..');
if k then z:=8 else begin z:=ln; ln:=8; end;
{$I-} assign (f1,a1); reset (f1); {$I+}
if ioresult<>0 then begin writeln ('File error..');
end;
{$I-} assign (f2,a2); rewrite (f2); {$I+}
if ioresult<>0 then begin writeln ('File error..');
end;
n:=0; w:=0;
repeat
read (f1,b); {зЁв Ґ¬ Ї®Ў ©в­®}

вот че выходит
Код
е конено поай е иел казал.
оледний аз пивел на  обой в о зал.
адами леп м оим  ен,  гн
зава азлеим,  обой ко кда.
зава азлеим пен из гнезда.
веи на кла, може б, олко еез года.



чето все равно разорхивация плохо работает
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.