Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на типизированный и текстовый файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
UnSpi
Помогите решить такие задачи,пожалуйста:
1).Выполнить задание для заданного типизированного файла чисел f. Компоненты файла – целые (отличные от нуля) числа, причем десять идущих подряд положительных чисел чередуются с десятью отрицательными числами и т. д.
Получить файл g, в котором записано сначала пять положительных чисел, затем пять отрицательных и т.д.
2).Выполнить это же задание при условии, что файл f – текстовый, в котором каждое число записано в новой строке.
volvo
Поиск используй, я делал если не это же, то очень похожее задание...
UnSpi
Да,я нашел в FAQ такую задачу,но там непонятно написано!!!!! sad.gif
если кто-нибудь знает ,помогите решить эту задачу!!!!
Очень надо!!!!Пожалуйста!!!
volvo
1. Попробуй вот такой вариант (только файл input.dat нужно создать вначале, чтобы он содержал данные именно в том порядке, в котором указано в условии... И еще: эта программа будет работать ТОЛЬКО если число элементов файла кратно 20, то есть если файл содержит целое число серий "+" "+" "-" "-", которые преобразуются в "+" "-" "+" "-")
type
f_int = file of integer;

procedure read_20(var f, g: f_int);
const
pos: array[1 .. 4] of byte = (0, 10, 5, 15);
var
f_pos: longint;
i, j: byte;
x: integer;
begin
f_pos := filepos(f);
for i := 1 to 4 do begin
seek(f, f_pos + pos[i]);
for j := 1 to 5 do begin
read(f, x); write(g, x);
end
end;
end;

var
f, g: f_int;
f_pos: longint;
begin
assign(f, 'input.dat');
reset(f);
assign(g, 'output.dat');
rewrite(g);

f_pos := 0;
while not eof(f) do begin
seek(f, f_pos);
read_20(f, g);
inc(f_pos, 20)
end;

close(g);
close(f);
end.


Кстати, что именно непонятно в FAQ ?
UnSpi
Извиняюсь,в FAQ все было понятно,это я перепутал эту задачу с другой,скачанной с др. сайта по Pascal'ю.
И ,кстати ,за что отвечает данный кусок программы?
Я плохо понимаю в этой задаче и вообще в Pascal'е ,так что,пожалуйста, либо полностью напиши данную программу,либо хотя бы помоги ,где мне ее найти????
volvo
Если плохо понимаешь в паскале - бери книгу и читай... Я не Фаронов. Тебе предоставили ПОЛНОСТЬЮ рабочую программу, а ты даже не удосужился ее откомпилировать и назвал "куском". angry.gif
UnSpi
Я извиняюсь,просто встал не с той ноги,и не разобрался полностью с задачей !!! sad.gif
даже сообщение толком написать не могу.
вопрос :как мне внести данные ,чтобы программа потом работала?????
P.S.пойду читать Фаронова!!!!!
NightPaladin
Цитата
assign(f, 'input.dat');
...
assign(g, 'output.dat');


те недо создать в корне файл input.dat и ввести в него данные а output создаст программа при выводе результатов
UnSpi
ок ,я уже полностью разобрался с программой,но как я понял это задача на типизированный файл.Помогите решить ее (задачу) при условии что файл текстовый
UnSpi
неужели никто не знает??? sad.gif
Правда,задача очень нужна!!!
помогите,кто-нибудь!!!
volvo
Цитата(UnSpi @ 31.05.05 22:20)
неужели никто не  знает???

Почему же "не знает"... Эта задача элементарно переделывается из первой - единственное что нужно сделать - объявить файлы нужного типа, и поменять Read на ReadLn и Write на WriteLn...

Да, еще нужно написАть функцию Seek_f() для текстовых файлов, потому что Seek с текстовыми файлами работать не умеет... Программа вместе с тестовым файлом здесь: Нажмите для просмотра прикрепленного файла
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.