var
a,b,c,p,s:real;
flag:boolean;
begin
flag:=false;
repeat
write('Введите стороны a,b,c: '); readln(a,b,c);
if (a+b>c) and (a+c>b) and (b+c>a) and (a*b*c>0) then
flag:=true
else
writeln('Некорректные данные.');
until flag;
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('S=',s);
end.
var
a,b,c,p,s:real;
flag:boolean;
begin
flag:=false;
repeat
write('Введите стороны a,b,c: '); readln(a,b,c);
if (a+b>c) and (a+c>b) and (b+c>a) and (a*b*c>0) then
flag:=true
else
writeln('Некорректные данные.');
until flag;
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('S=',s);
end.