Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2009, 10:13   #1
AlexGur
 
Регистрация: 26.01.2009
Сообщений: 6
По умолчанию Pascal, файлы. Произвести распаковку файла

Доброго утра, дня, вечера, ночи!

задача по файловым типам данных

16.2. Дан символьный файл, полученный с помощью про-граммы варианта 16.1. Произвести «распаковку» этого файла.

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

Дан символьный файл, произвести «распаковку» этого файла.


навсякий случай вариант 16.1
16.1. Дан символьный файл. Произвести "сжатие" этого файла следующим образом. Каждая последовательность, состоящая из не-скольких вхождений одного и того же символа, заменяется на запись типа x k, где х – число вхождения символа k в исходную последовательность. Сравнить размеры файлов.

Заранее, спасибо
AlexGur вне форума Ответить с цитированием
Старый 27.01.2009, 14:55   #2
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

действие обратное сжатие добавляет число перед элементом, который встречается это число раз, а ты должен сделать наоборот - по количеству распаковать файл - то есть написать в файле один и тот же символ столько раз, какое число указано перед этим символом - обратное действие
capta1n вне форума Ответить с цитированием
Старый 27.01.2009, 16:35   #3
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Код:
var f,t:text;
i:integer;
c:char;
s:string;
begin
writeln('Vvedite ima faila');
readln(s);
assign(f,s);
{$i-} reset(f); {$i+}
if ioresult<>0 then 
begin
Writeln('fail nenaiden');
readln;
halt
end;
assign(t,'exit.txt');
rewrite(t);
while not eof(f) do
begin
read(f,i,c);
for i:=1 to i do write(t,c);
end;
close(f);
close(t);
end.

Последний раз редактировалось pomoshnic; 27.01.2009 в 20:05.
pomoshnic вне форума Ответить с цитированием
Старый 27.01.2009, 17:23   #4
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

да в принципе два раза вызывать процедру read не обязательно
Цитата:
read(f,b1);
read(f,b2);
- просто напиши read (f,b1,b2) это так - совет
capta1n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PASCAL: текстовые задачи и файлы xxBOBAHxx Помощь студентам 3 08.12.2008 21:03
Файлы(Pascal) Дима82 Помощь студентам 4 02.06.2008 21:22
Дин.стуктуры и файлы. pascal velgelmina Помощь студентам 5 07.06.2007 21:54