Помогите исправить арифметическое переполнение
Program VID_TRG;
var x1,y1,z1,x2,y2,z2,x3,y3,z3:byte;
d1,d2,d3:real;
f:text;
begin
assign (f,'coord.txt');
reset (f);
d1:=0; d2:=0; d3:=0;
while not eof(f) do
begin
read (f,x1,y1,z1,x2,y2,z2,x3,y3,z3);
d1:=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
d2:=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2));
d3:=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)+(z1-z3)*(z1-z3));
writeln (d1:0:4,' ',d2:0:4,' ',d3:0:4);
end;
close (f);
readln;
end.
Тут идет чтение координат точек треугольника из файла и подсчет длины каждой из сторон треугольника d. Вот именно перед подсчетом длины сторон мне паскаль и выдает арифметическое переполнение.
Каким образом можно это исправить?
Program VID_TRG;
var x1,y1,z1,x2,y2,z2,x3,y3,z3:byte;
d1,d2,d3:real;
f:text;
begin
assign (f,'coord.txt');
reset (f);
d1:=0; d2:=0; d3:=0;
while not eof(f) do
begin
read (f,x1,y1,z1,x2,y2,z2,x3,y3,z3);
d1:=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
d2:=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2));
d3:=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)+(z1-z3)*(z1-z3));
writeln (d1:0:4,' ',d2:0:4,' ',d3:0:4);
end;
close (f);
readln;
end.
Тут идет чтение координат точек треугольника из файла и подсчет длины каждой из сторон треугольника d. Вот именно перед подсчетом длины сторон мне паскаль и выдает арифметическое переполнение.
Каким образом можно это исправить?