Program lab1bochkov;
uses crt;
type
Tcars = object
number: string[6];
color: string[20];
style: string[1];
procedure Input;
procedure Show;
end;
Tpassenger = object(Tcars)
year: string[4];
doors: string[2];
end;
Tcargo = object(Tcars)
weight: string[5];
axis: string[1];
end;
Tbus = object(Tcars)
company: string[15];
capacity: string[3];
end;
var
cars : array[1..10] of Tcars;
carss : array[1..10] of Tpassenger;
carss2 : array[1..10] of Tcargo;
carss3 : array[1..10] of Tbus;
Procedure Tcars.Input;
var
i,m1,dl,year1,doors1,axis1,weight1,capacity1,st3:integer;
m,j:string;
begin
clrscr;
writeln('Enter the number of machines');
readln(m);
val(m,m1,st3);
while (st3<>0) or (m1<4) or (m1>10) do begin
writeln('4 to 10');
writeln('Again');
readln(m);
val(m,m1,st3);
end;
for i:=1 to m1 do begin
writeln('Enter number');
readln(cars[i].number);
writeln('Enter color');
readln(cars[i].color);
writeln('Enter style: p-passenger, c-cargo, b-bus');
readln(j); dl:=length(j);
while (dl<>1) do begin
writeln('Incorrect type');
writeln('Again');
readln(j); dl:=length(j);
end;
while((j<>'p')and(j<>'c')and(j<>'b')) do begin
writeln('Incorrect type');
writeln('Again');
readln(j);
end;
if j='p' then begin
cars[i].style:='passenger';
writeln('Enter year') ;
readln(carss[i].year);
val(carss[i].year,year1,st3);
while (st3<>0)or(year1<1900)or(year1>2020) do begin
writeln('1900 to 2020');
writeln('Again');
readln(carss[i].year);
val(carss[i].year,year1,st3);
end;
writeln('Enter doors');
readln(carss[i].doors);
val(carss[i].doors,doors1,st3);
while (st3<>0)or(doors1<1)or(doors1>6) do begin
writeln('1 to 6');
writeln('Again');
readln(carss[i].doors);
val(carss[i].doors,doors1,st3);
end;
End
else if j='c' then begin
cars[i].style:='cargo';
writeln('Enter weight') ;
readln(carss2[i].weight);
val(carss2[i].weight,weight1,st3);
while (st3<>0)or(weight1<500)or(weight1>20000) do begin
writeln('500 to 20000');
writeln('Again');
readln(carss2[i].weight);
val(carss2[i].weight,weight1,st3);
end;
writeln('Enter axis');
readln(carss2[i].axis);
val(carss2[i].axis,axis1,st3);
while (st3<>0)or(axis1<1)or(axis1>6) do begin
writeln('1 to 6');
writeln('Again');
readln(carss2[i].axis);
val(carss2[i].axis,axis1,st3);
end;
End
else begin
cars[i].style:='bus';
writeln('Enter company') ;
readln(carss3[i].company);
writeln('Enter capacity');
readln(carss3[i].capacity);
val(carss3[i].capacity,capacity1,st3);
while (st3<>0)or(capacity1<1)or(capacity1>150) do begin
writeln('1 to 150');
writeln('Again');
readln(carss3[i].capacity);
val(carss3[i].capacity,capacity1,st3);
end;
end;
end;
end;
Procedure Tcars.show;
var pp,i:integer;
begin
writeln('How to make a record? To exit, press "0"');
Readln(pp);
while(pp<>0) do begin
while (pp<1) or (pp>10) do begin
writeln('1 to 10');
writeln('Again');
readln(pp);
end;
writeln(cars[pp].number);
writeln(cars[pp].color);
if cars[i].style='passenger' then begin
writeln(carss[pp].year);
writeln(carss[pp].doors); end;
if cars[i].style='cargo' then begin
writeln(carss2[pp].weight);
writeln(carss2[pp].axis); end;
if cars[i].style='bus' then begin
writeln(carss3[pp].company);
writeln(carss3[pp].capacity); end;
writeln('How to make a record? To exit, press "0"');
readln(pp);
end;
end;
Begin
{Tcars.Input();}
{Tcars.Show; }
End.