1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
I. Удалить из внешнего файла все записи, удовлетворяющие условию, заданному в варианте, и распечатать информацию, оставшуюся в файле. II. Добавить N записей в конец внешнего файла
я так понял,что добавить необходимо в первоначальный вариант введенных данных,а не в тот файл,где находятся записи подходящие нашему условию. Условие такого:удалить тех у кого отличные оценки и в аттестате и при вступительных экзаменах,а добавить например 2-х человек,а затем распечатать тех,кто сдал вступительные экзамены на 4 и 5(я так понял из все вообще введенных студентов,т.е изначальные+добавленные)!Заранее всем огромное спасибо!
вот мой код:
uses crt; type abit=record fio:string[20]; godrow:integer; godokon:integer; at_mat:integer; at_rus:integer; at_fiz:integer; Obwaga:char; ab_mat:integer; ab_rus:integer; ab_fiz:integer; end; var f,f1:file of abit; s,r1,r:abit; ch:char; i,k,n,m:integer; key1,key2:boolean;
procedure Vvod; begin with s do begin writeln; writeln('______'); writeln('Vvedite dannue o ',i,'-m abiture:'); writeln('_______'); writeln('vvedite FIO:'); readln(Fio); writeln('Vvedite God rowd:'); readln(godrow); writeln('Vvedite god okonch wkolu:'); readln(godokon); writeln; writeln('Vvedite ozenki attestata:'); writeln('matematika:'); readln(at_mat); writeln('Russkij:'); readln(at_rus); writeln('fizika'); readln(at_fiz); writeln; key1:=false; writeln('Nuwna obwaga:[y/n]'); readln(obwaga); if (obwaga in ['Y','y','N','n']) then key1:=true; writeln; writeln('Vvedite ozenki vstupit ekzov:'); writeln('matematika'); readln(ab_mat); writeln('Russkij'); readln(ab_rus); writeln('fizika'); readln(ab_fiz); write(f1,r); end; end;
procedure udal; var i,j:integer; begin reset(f1); for i:=1 to filesize(f1) do with r do begin if (at_mat<>5) and (at_rus<>5) and (at_fiz<>5) and (ab_mat<>5) and (ab_rus<>5) and (ab_fiz<>5) then write(f,s); end; end;
procedure Vivod; begin reset(f); while not eof(f) do begin read(f,s); with s do begin writeln('|',fio,'|',godrow,'|',godokon,'|',at_mat,'|',at_rus,'|',at_fiz,'|',ab_mat,'|',ab_rus,'|',ab_fiz,'|',obwaga,'|'); end; end; close(f); end;
Procedure sortirovka; var i,j,n:integer; f:text; begin reset(f1); n:=filesize(f1)-1; for i:=0 to n do begin for j:=0 to n-1 do begin seek(f1,j); read(f1,r); read(f1,r1); with s do begin if r.at_fiz>r1.at_fiz then begin seek(f1,j); write(f1,r1); write(f1,r); end; end; end; end; close(f1) end;
procedure Vivod2; begin reset(f1); while not eof(f1) do begin read(f1,r); with r do begin writeln('|',fio,'|',godrow,'|',godokon,'|',at_mat,'|',at_rus,'|',at_fiz,'|',ab_mat,'|',ab_rus,'|',ab_fiz,'|',obwaga,'|'); end; end; close(f1); end;
begin clrscr; assign(f1,'zad8.dat'); rewrite(f1); writeln('Programmu vupolnyal student 1-ogo kursa Zimin Egor'); writeln('_____________________________________________________'); writeln(' '); writeln('vvedite kol tovarov-'); readln(n); for i:=1 to n do begin vvod; end; close(f1); assign(f,'zad8.dat'); rewrite(f); udal; vivod; dobav; vivod2; readln; end.