type единица=(дец,км,м,мм,см);
длина=real;
var х:длина; р:единица;
Значение переменной х, означающее длину в единицах р, заменить на величину в метрах.
-----------------------------------------------------------------------------------
Проблема в том, что нельзя применять процедуры read(p)/write(p)
Но нужно ухитриться написать программу так, чтобы можно выбирать любую из перечислинных единиц и после переводить в метры (не через простое присвоение, например, p:=dec; !!! )
У меня пока вот что получилось:
program numtypes;
uses crt;
const name='A:\numtypes.out';
type yedinitsa=(dec,km,m,mm,sm);
dlina=real;
var x:dlina;
p:yedinitsa;
ch:char;
i:integer;
f:text;
begin
assign(f,name);
rewrite(f);
writeln(f,'Laboratornaya rabota 8. Perechislimiye tipi');
writeln(f,'Zadaniye: znacheniye x, oznachayuscheye dlinu v yedinitsaj p,');
writeln(f,'zamienit na vielichinu v mietraj');
repeat;
clrscr;
writeln('Vvieditie dlinu x v yedinitsaj p');
read(x); write(' m^'); readln(i);
if x>=0 then
begin
writeln(f,'Rezultat');
case i of
-1:writeln(f,0.1*x:7:5,' metrov ');
3:writeln(f,1000*x:7:5,' metrov');
1:writeln(f,x:7:5,' metrov');
-3:writeln(f,0.001*x:7:5,' metrov');
-2:writeln(f,0.01*x:7:5,' metrov');
end;
end
else writeln('Error !');
readln;
writeln;
write('Again - Y, else exit ');
read(ch);
until upcase (ch) <> 'Y';
close(f);
readln;
end.
Возможно надо как-то связать i и p...