1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
procedure ShowInfo (var b : TBase; var f : TFile; x : integer; k : integer); var i : byte; begin read(f, b); writeln('Infromation about mans : '); for i := 1 to k do with b[i] do begin if bornyear > x then begin writeln('Name : ' , name); writeln('Born day: ' , bornday , '; Born month: ' , bornmonth , 'Born year: ' , bornyear); writeln('Adress: ' , adress); writeln; end; end; end;
procedure Input(var b : TBase; var f : TFile; var k : integer); var i : byte; begin writeln('Vvod bazy dannyx. ');writeln(''); for i := 1 to k do with b[i] do begin writeln('Chelovek N ',i); write('Name : '); readln(name); write('Born day: '); readln(bornday); write('Born month: '); readln(bornmonth); write('Born year: '); readln(bornyear); write('Adress: '); readln(adress); writeln; end; write(f, b); end;
procedure Print(var b : TBase; var f : TFile; var k : integer); var i : byte; begin read(f, b); writeln('Infromation about mans : '); for i := 1 to k do with b[i] do begin writeln('Name : ' , name); writeln('Born day: ' , bornday , '; Born month: ' , bornmonth , 'Born year: ' , bornyear); writeln('Adress: ' , adress); writeln; end; end;
var base : TBase; baseFile : TFile; birthYr : integer; temp : integer; k : integer;
begin CLRSCR; temp := -1; assign(baseFile, 'c:\students.db');
while temp <> 0 do begin
CLRSCR; write('1 - create database; 2 - mans which born after X year; 3 - prints database; 0 - exit ... '); readln(temp);
if temp = 1 then begin rewrite(baseFile); Write('Enter count fo rows for file: '); Readln(k); Input(base, baseFile, k); writeLn('Press any key ...'); ReadKey; close(baseFile); end;
if temp = 2 then begin reset(baseFile); write('Enter start birthyear: '); readln(birthYr); ShowInfo(base, baseFile, birthYr, k); close(baseFile); end;
if temp = 3 then begin reset(baseFile); Print(base, baseFile, k); close(baseFile); end;
end;
writeln('Press any button for exit ...'); ReadKey end.
Всем огромное спасибо! В результате мною было принято решение переписать программу полностью!
program rec; Uses crt; type trec = record name : string[50]; startnum : integer; result : real; end; frec = file of trec; var f : frec; temp, k : integer;
procedure Add (var f1: frec; num: integer); var r : trec; k,i : integer; begin CLRSCR; Reset (f1); k := FileSize (f1); Seek (f1, k); for i := 1 to num do begin with r do begin Write ('Name: '); readln (name); Write ('Start number: '); readln (startnum); Write ('Result: '); readln (result); Write (f1, r); Writeln; end end; Close (f1); Writeln ('Press any key ...'); ReadKey; end;
procedure Input (var f1: frec; num: integer); var r : trec; k,i : integer; begin CLRSCR; ReWrite (f1); for i := 1 to num do with r do begin Write ('Name: '); readln (name); Write ('Start number: '); readln (startnum); Write ('Result: '); readln (result); Write (f1, r); k := k + 1; end; Close (f1); end;
procedure Print (var f1: frec); var r: trec; k: integer; begin CLRSCR; Reset (f1); while NOT EOF (f1) do begin Read (f1, r); with r do begin Writeln ('Name: ' , name); Writeln ('Start number: ' , startnum); Writeln ('Result: ' , result:6:3); Writeln; end; end; close (f1); writeln; Writeln ('Press any key ...'); ReadKey; end;
procedure Delete (var f1: frec; num: integer); var r : trec; i, fsize : integer; tempfile : frec; begin Assign (tempfile, 'c:\temp.db'); ReWrite (tempfile); Reset (f1); While NOT EOF(f1) do begin Read (f1, r); if r.startnum <> num then begin Write (tempfile, r); end; end; Close (f1); Close (tempfile); ReWrite (f1); Reset (tempfile); fsize := FileSize (tempfile); for i := 1 to fsize do begin Read (tempfile, r); Write (f1, r); end; Close (f1); Close (tempfile); Writeln ('Sportsmen was successfully deleted! Now press any key ...'); ReadKey; end;
procedure Top (var f1: frec); var r,rmax,rmin : trec; max,min : real; i : integer; begin CLRSCR; Reset (f1); min := 99999; max := -99999; While NOT EOF(f1) do begin Read (f1 ,r); if r.result > max then begin rmax.name := r.name; rmax.startnum := r.startnum; rmax.result := r.result; max := rmax.result; end; if r.result < min then begin rmin.name := r.name; rmin.startnum := r.startnum; rmin.result := r.result; min := rmin.result; end end; if rmin.startnum = rmax.startnum then begin Writeln ('Oops! The first and the last is at the same time ' , rmin.name , ' with:'); Writeln ('Start number: ' , rmin.startnum , ';'); Writeln ('Result: ' , rmin.result:6:3 , '.'); end else begin Writeln ('First was ' , rmin.name , ' with: '); Writeln ('Start number: ' , rmin.startnum , ';'); Writeln ('Result: ' , rmin.result:6:3 , '.'); Writeln; Writeln; Writeln ('Last was ' , rmax.name , ' with: '); Writeln ('Start number: ' , rmax.startnum , ';'); Writeln ('Result: ' , rmax.result:6:3 , '.'); end; Close (f1); Writeln ('Now press any key ...'); ReadKey; end;
procedure Edit (var f1: frec; num: integer); var r : trec; i, fsize : integer; tempfile : frec; begin CLRSCR; Assign (tempfile, 'c:\temp.db'); ReWrite (tempfile); Reset (f1); While NOT EOF(f1) do begin Read (f1, r); if r.startnum <> num then begin Write (tempfile, r); end else begin Writeln ('Redaktirovanie sportsmena with start number "' , num , '":'); Writeln; Write ('Name: '); Readln(r.name); Write ('Start number: '); Readln(r.startnum); Write ('Result: '); Readln(r.result); write (tempfile, r); Writeln; end end; Close (f1); Close (tempfile); ReWrite (f1); Reset (tempfile); fsize := FileSize (tempfile); for i := 1 to fsize do begin Read (tempfile, r); Write (f1, r); end; Close (f1); Close (tempfile); Writeln ('Sportsmen was successfully edited! Now press any key ...'); ReadKey; end;
begin temp := -1; assign (f, 'c:\students.db'); while temp <> 0 do begin clrscr; Writeln ('1 - create database;'); Writeln ('2 - print database;'); Writeln ('3 - add record;'); Writeln ('4 - delete record;'); Writeln ('5 - view first and last sportsmen;'); Writeln ('6 - edit sportsmen;'); Writeln ('0 - exit from program;'); Write ('Operation: '); Readln (temp);
if temp = 1 then begin Write ('How many rows database must have? '); readln (k); Input (f, k); end;
if temp = 2 then begin Print (f); end;
if temp = 3 then begin Write ('How many records you wish to add? '); readln (k); Add (f, k); end;
if temp = 4 then begin Write ('Enter start number of deleting sportsmen: '); read (k); Delete (f, k); end;
if temp = 5 then begin Top (f); end;
if temp = 6 then begin Write ('Enter start number of editing sportsmen: '); readln (k); Edit (f, k); end; end end.