Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи на заказ _ Программа архиватор- разархиватор текстовых файлов

Автор: blackhard 29.10.2007 23:17

Задача такая:

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

Примечание: Мне препод сказал, что как-то надо сделать так, чтобы на символ приходилось не 8 бит, а 5... можно 6. ( Сказал надо использовать SHL и SHR, а я только школу закончил, полтора месяца отучился, что такое бинарные операции и что с ними делать не представляю).заплачу 150-200р.

Автор: Malice 30.10.2007 0:04

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

Автор: blackhard 30.10.2007 2:22

Цитата(Malice @ 29.10.2007 21:04) *

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

с командной строки.а может еще за 150 вот это сделаеш :исходная информация:текст на русском языке и значение длинны отформатированной строки.
задание: переформатировать текст так чтобы длинна любой строки была равна заданной величине.
Выравнять текст по правому краю равномерным увеличением длины пробелов.(длины каждых 2х пробелов между словами не должны отличаться больше чем на единицу.помогите нужно как можно быстрее.
и какой щет форума?

Автор: Tan 30.10.2007 2:27

http://forum.pascal.net.ru/index.php?showtopic=9779

Автор: blackhard 30.10.2007 2:32

Цитата(Tan @ 29.10.2007 23:27) *

http://forum.pascal.net.ru/index.php?showtopic=9779

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

Автор: Lapp 30.10.2007 2:47

( от Администрации: )

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

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

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

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

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

Автор: blackhard 30.10.2007 3:14

Цитата(Lapp @ 29.10.2007 23:47) *

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

Еще вот, что:

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

хорошо 300р на счет когда будет готово напиши.токо можно 2ю задачу сделать в 2х вариантах 1)если слово в тексте больше заданного значения строки выводим ошибку и повторяем ввод значения строки 2)если слово в тексте больше заданного значения строки выполняем перенос.

Автор: Malice 30.10.2007 3:15

Цитата(Lapp @ 29.10.2007 22:47) *

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

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

Автор: blackhard 30.10.2007 3:45

Цитата(Malice @ 30.10.2007 0:15) *

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

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

Автор: Lapp 30.10.2007 4:39

Цитата(blackhard @ 30.10.2007 0:45) *

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

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

Автор: blackhard 30.10.2007 4:39

Цитата(Lapp @ 30.10.2007 1:39) *

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

хорошо большое спасибо

Автор: Lapp 30.10.2007 15:13

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

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

Автор: blackhard 30.10.2007 17:54

Цитата(Lapp @ 30.10.2007 12:13) *

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

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

Автор: Altair 31.10.2007 2:00

Перевод получен

Добавлено через 5 мин.
Исходники отправлены

Автор: blackhard 7.11.2007 20:53

Цитата(Malice @ 29.10.2007 20:04) *

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

по поводу архиватора:как можно переделать в задаче ввод вывод данных а то все время выдает siyntex error

Автор: Malice 7.11.2007 21:13

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

Автор: blackhard 7.11.2007 21:56

Цитата(Malice @ 7.11.2007 17:13) *

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

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

Автор: Malice 8.11.2007 0:30

Цитата(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 8.11.2007 5:51

Цитата(blackhard @ 7.11.2007 17:56) *

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

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

Автор: blackhard 8.11.2007 23:14

Цитата(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 9.11.2007 0:46

Да простит меня великий модератор, прикреплю архивчик с прогой, откомпиленной прогой, исходный файлом и start.bat файлом (который надо запустить, чтоб увидеть code/decode если что [результат кодировки в 2.txt, обратно в 3.txt, так, на всякий случай]), но ответить подробно я не в состоянии сейчас.. Не удивлюсь, что прога запускалась в том же виде (кодировке), что и прекреплена smile.gif Разница в конечном и исходном файлах должна объяснятся неполнотой используемого алфавита.
Прикрепленный файл  code.ZIP ( 6.59 килобайт ) Кол-во скачиваний: 272

Автор: blackhard 9.11.2007 23:10

Цитата(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); {зЁв Ґ¬ Ї®Ў ©в­®}

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



чето все равно разорхивация плохо работает