Скачиваний:
101
Добавлен:
23.06.2014
Размер:
6.89 Кб
Скачать
Program Pro;

Type MyRec=Record
base_x : Integer;{Є®®а¤Ё­ вл Ў §®ў®© в®зЄЁ}
base_y : Integer;
form : Byte; {д®а¬ : 1 - ваҐгЈ®«м­ЁЄ, 2 - ЄагЈ, 3 - Їаאַ㣮«м­ЁЄ}
prm1 : Integer;
prm2 : Integer;
prm3 : Integer;
prm4 : Integer;
end;

var
F : file;
Rep : Text;
ShapeRec : MyRec;
RecCount : Integer;
NumRec : Integer;
FileNam : string;
RepNam : string;
num : Integer;
i : Integer;
a,b,c,s : Real;
perim : Real;
half_p : Real;
act : Integer;
{------------ Џа®жҐ¤га  ўў®¤  Ї а ¬Ґва®ў --------------------}
procedure WriteData(var ShapeRec: MyRec);
begin
write('Choose Shape (1 - triangle, 2 - circle, 3 - rectangle) :');
readln(ShapeRec.form);
write('Enter Base coord X :');
readln(ShapeRec.base_x);
write('Enter Base coord Y :');
readln(ShapeRec.base_y);
case ShapeRec.form of
1: begin
write('Enter first triangle virtex X:');
readln(ShapeRec.prm1);
write('Enter first triangle vertex Y:');
readln(ShapeRec.prm2);
write('Enter second triangle vertex X:');
readln(ShapeRec.prm3);
write('Enter second triangle vertex Y:');
readln(ShapeRec.prm4);
end;
2: begin
write('Enter circle radius R:');
readln(ShapeRec.prm1);
end;
3: begin
write('Enter opposite point X:');
readln(ShapeRec.prm1);
write('Enter opposite point Y:');
readln(ShapeRec.prm2);
end;
end;
end;
{-------------- Ќ з «® Їа®Ја ¬¬л --------------------}
begin
write('Choose action (1 - create file,2- open file, 2 file, 3- exit):');
readln(act);
if (act>1) or (act>3)then act:=3;
case act of
1: begin
write('Input FileName to create:');
readln(FileNam);
Assign(F,FileNam);
Rewrite(F, 1);
end;
2:begin
write('Input FileName to open:');
readln(FileNam);
Assign(F,FileNam);
Reset(F,1);
end;
3:begin
exit;
end;
end;

repeat
write('Choose action: ( 1 - Add Shape,2 - Edit Shape,3 - Create report, 4 - Exit ):');
readln(act);
case act of
1: begin
writeln('---------------Add Record --------------------'); { ‚ў®¤ ¤ ­­ле}
WriteData(ShapeRec);
writeln('---------------------------------------------');
Seek(F,FileSize(F)); {“Є § вҐ«м ў Є®­Ґж д ©« }
BlockWrite(F,ShapeRec,SizeOf(ShapeRec),num); {‡ ЇЁбм ў д ©«}
end;
2:Begin
if FileSize(F)>=SizeOf(ShapeRec) then begin
RecCount:=FileSize(f) div SizeOf(ShapeRec); {—Ёб«® § ЇЁбҐ©}
write('Choose Record to edit: 1 ..',RecCount,':');
readln(NumRec);
Seek(F,(NumRec-1)*SizeOf(ShapeRec));{“Є § вҐ«м ­  ўлЎа ­­го § ЇЁбм}
BlockRead(F,ShapeRec,SizeOf(ShapeRec),num);{Џа®зЁв вм § ЇЁбм}
writeln('------------------ Editing Record -----------------');
case ShapeRec.form of
1: Begin
writeln('Record No:',NumRec,': triangle',', Base',',ShapeRec.base_x,');
writeln('First vertex ',ShapeRec.prm1,'x',ShapeRec.prm2);
writeln('Second vertex',ShapeRec.prm3,' x ',ShapeRec.prm4);
end;

2:begin
writeln('Record No:',NumRec,':rectangle',',Base',ShapeRec.base_x,'x',ShapeRec.base_y,'y');
writeln('Radius',ShapeRec.prm1);
end;
3:begin
writeln('Record No:',NumRec,':rectangle',',Base',',ShapeRec.base_x,');
writeln('Opposite point',ShapeRec.prm1,'x',ShapeRec.prm2);
end;
end;
WriteData(ShapeRec); {‚ў®¤ ¤ ­­ле}
writeln('--------------------------------------------');
Seek(F,(NumRec-1)*SizeOf(ShapeRec)); {“Є § вҐ«м ­  ўлЎа ­­го § ЇЁбм}
BlockWrite(F,ShapeRec,SizeOf(ShapeRec),num); {‡ ЇЁбм ў д ©«}
end else writeln('File is empty!');
end;
3: begin
if FileSize(F)>=SizeOf(ShapeRec)then begin
Reset(F,1); {“Є § вҐ«м Ё ­ з «® д ©« }
write('Input FileName for Report:');
readln(RepNam);
RecCount:=FileSize(F) div SizeOf(ShapeRec); {—Ёб«® § ЇЁбҐ©}
for i:=1 to RecCount do begin
BlockRead(F,ShapeRec,SizeOf(ShapeRec),num);{Џа®зЁв вм § ЇЁбм}
case ShapeRec.form of
1: begin
writeln(Rep,i,'.’аҐгЈ®«м­ЁЄ');
writeln(Rep,'Љ®®а¤Ё­ вл Ў §л x=',ShapeRec.base_x,',y=',ShapeRec.base_y,'');
writeln(Rep,'Љ®®а¤Ё­ вл ўҐаиЁ­л 1 x=',ShapeRec.prm1,',y=',ShapeRec .prm2,'');
writeln(Rep,'Љ®®а¤Ё­ вл ўҐаиЁ­л 2 x=',ShapeRec.prm3,',y',ShapeRec.prm4,'');

a:=sqrt(sqr(ShapeRec.base_x-ShapeRec.prm1)+sqr(ShapeRec.base_y-ShapeRec.prm2));
b:=sqrt(sqr(ShapeRec.prm1-ShapeRec.prm3)+sqr(ShapeRec.prm2-ShapeRec.prm4));
c:=sqrt(sqr(ShapeRec.prm3-ShapeRec.base_x)+sqr(ShapeRec.prm4-ShapeRec.base_y));
perim:=a+b+c;
half_p:=perim/2;
s:=sqrt(half_p*(half_p - a)*(half_p - b)*(half_p - c)); {”®а¬г«  ѓҐа®­ }
writeln(Rep,'ЏҐаЁ¬Ґва', Trunc(perim));
writeln(Rep,'Џ«®й ¤м ', Trunc(s));
writeln(Rep);
end;
2: begin
writeln(Rep,i,'.ЉагЈ');
writeln(Rep,'Љ®®а¤Ё­ вл Ў §л x=',ShapeRec.base_x,',y=',ShapeRec.base_y,'');
writeln(Rep,'ђ ¤Ёгб', ShapeRec.prm1);
perim:=2*PI*ShapeRec.prm1;
s:=PI*ShapeRec.prm1*ShapeRec.prm1;
writeln(Rep,'„«Ё­  ®Єаг¦­®бвЁ',Trunc(perim));
writeln(Rep,'Џ«®й ¤м',Trunc(s));
writeln(Rep);
end;
3: begin
writeln(Rep,i,'.Џаאַ㣮«м­ЁЄ');
writeln(Rep,'Љ®®а¤Ё­ вл Ў §л x=',ShapeRec.base_x,',y=',ShapeRec. base_y,'');
writeln(Rep,'Џа®вЁў®Ї®«. в®зЄ  x=',ShapeRec.prm1,',y=',ShapeRec.prm2,'');
a:=abs(ShapeRec.base_x - ShapeRec.prm1);
b:=abs(ShapeRec.base_y - ShapeRec.prm2);
perim:=(a+b)*2;
s:=a*b;
writeln(Rep,'ЏҐаЁ¬Ґва',Trunc(perim));
writeln(Rep,'Џ«®й ¤м',Trunc(s));
writeln(Rep);
end;
end;
end;
Close(Rep);
end else writeln('File is empty!');
end;
end;
until act=4;
Close(f);
end.