Помощь - Поиск - Пользователи - Календарь
Полная версия: текстовый файл и файл записей
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
18192123
в файле хранится информация о каждом студенте группы: ф.и.о. и оценки по 3-м предметам. переписать эти данные в другой файл записей исключая сведения о неуспевающих студентах.(для работы с файлом - только assign,reset,rewrite, close, eof, rename, erase,seek)что-то получилось, но некоторые моменты не понятны

uses crt;
type stud=record
                fio:string[15];
                tp:byte;
                info:byte;
                matan:byte;
      end;
VAR f:text; f1:file of stud; p:stud;
procedure creat_arh;
var
   t1,t2,t3:byte;
begin
reset(f);
rewrite(f1);
while not eof(f) do
with p do
     begin
          readln(f,fio,tp,info,matan);
          if tp=2 then t1:=0
          else t1:=tp;
          if info=2 then t2:=0
          else t2:=info;
          if matan=2 then t3:=0
          else t3:=matan;
     end;
close(f);
close(f1);
writeln('enter!!!');
readln;
end;
procedure write_arh;
var
   i:integer;
begin
reset(f1);
writeln('Otsenki');
Writeln('===============================');
writeln(':fio studenta:tp:info:matan:');
writeln('================================');
while not eof(f1) do
begin
     read(f1,p);
     with p do
     writeln(':',fio,':',tp:7,':',info:7,':',matan:7,':');
end;
writeln('===============================');
close(f1);
writeln('enter!!!');
readln;
end;
procedure U_stud;
var       n,k,i,j:integer;
begin
reset(f1);
i:=0;
n:={хочу найти кол-во компонентов в файле записей, но не знаю как, если без 
filesize}-1;
k:=0;
while i<=n do
begin
     seek(f1,i);
     read(f1,p);
     with p do
          if (t1=0 and t2=0 and t3=0) then
          begin
               for j:=i to n-1 do
               begin
                    seek(f1,j+1);
                    read(f1,p);
                    seek(f1,p);
                    seek(f1,j);
                    write(f1,p);
               end;
               seek(f1,n);
               { а как удалить без  truncate не знаю
               n:=n+1;
               k:=k+1;}
          end
          else i:=i+1;
end;
close(f1);
end;

BEGIN
assign (f,'d:\stud.txt');
creat_arh;
write_arh;
U_stud;
write_arh;
end.





мисс_граффити
1. чтобы найти количество элементов, иди циклом по файлу (пока не EOF(f)) и каждый раз прибавляй к переменной-счетчику записей единицу.
2. а тебе удаление как таковое не нужно: в старом файле запись остается... просто в новый ее не надо писать.
18192123
у меня появились вопросы:
предполагается, что у меня есть исходный файл (по смыслу задачи не текстовый, а файл записей) записей(там содержатся фио студентов и их оценки по 3-м предметам). вопрос вот какой - перед тем , как связывать этот файл с файловой переменной, мне нужно создать исходный файл на диске, а с каким расширением(чтоб потом элементы исходного файла считать в массив)?
18192123
Цитата(18192123 @ 4.12.2006 13:59) *

у меня появились вопросы:
предполагается, что у меня есть исходный файл (по смыслу задачи не текстовый, а файл записей) записей(там содержатся фио студентов и их оценки по 3-м предметам). вопрос вот какой - перед тем , как связывать этот файл с файловой переменной, мне нужно создать исходный файл на диске, а с каким расширением(чтоб потом элементы исходного файла считать в массив)?


ещё один вопросик:
а может мне лучше сначала создать этот исходный файл записей, где хранится фио студента и оценки по 3-м предметам?

пожалуйста, объясните, как быть?
мисс_граффити
Расширение может быть практически любое (в разумных пределах, конечно). В олимпиадных задачах это часто оговаривается: например, входной файл с расширением in, выходной - с out. Естественно, делать его exe или jpeg не стоит...

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