Перевести программу с языка Си на язык Паскаль #include
#include
#define nx (25)
#define x(a,b) b a
x(main,int)() { x(x(x([nx],[nx]),a),int);x(n,int);x(r,int);x(c,int);x(("n? "),printf);
x(("%d",&n),scanf);x((r=0;r < n ;++r),for) { x((c=0;c < n;++c),for) { x((r==c),if) a[r][c] = r;
else a[r][c]=0;printf("%""4""d",a[r][c]); } puts(""); } return(0); }
VAR a,b,c,d:REAL;
PROCEDURE Print_S(x,y,z:REAL);
VAR p,S:REAL;
begin If ((x+y)>z) and ((x+z)>y) and ((y+z)>x) then
begin
p:=x+y+z;
S:=SQRT(p*(p-x)*(p-y)*(p-z));
WriteLn('S= ',S);
end
else
Writeln('Треугольник не существует!');
end;
BEGIN Write('a= ');
ReadLn(a);
Write('b= ');
ReadLn(b);
Write('c= ');
ReadLn(c);
Write('d= ');
ReadLn(d);
WriteLn;
WriteLn('Стороны ',a,'; ',b,'; ',c);
Print_S(a,b,c);
WriteLn;
WriteLn('Стороны ',a,'; ',b,'; ',d);
Print_S(a,b,d);
WriteLn;
WriteLn('Стороны ',a,'; ',c,'; ',d);
Print_S(a,c,d);
WriteLn;
WriteLn('Стороны ',b,'; ',c,'; ',d);
Print_S(b,c,d);
END.
program i_2;
const c=2; f=4; g=6;
var r,p: real;
begin
writeln('определение площади треугольника по теореми Герона');
write('нахождение площади');
readln(r);
p:=(c+f+g)/2;
r:=sqrt(p*(p-c)*(p-f)*(p-g))
end.
Но есть куча вопросов:
1) Если c, f, g - стороны треугольника, то что такое - r ?
2) Если r - это площадь, то как мы можем её ввести, если мы хотим её сосчитать?
3) Где вывод полученной информации (writeln(r))?
4) Треугольника со сторонами c=2, f=4 и g=6 существовать не может
Предлагаю отказаться от экзотических обозначений и сделать проверку на существование треугольника, а также добавить получение данных по сторонам от пользователя:
program i_2;
var a,b,c,p,s: real;
begin
writeln('Определение площади треугольника по теореме Герона');
write('Введите стороны треугольника: ');
readln(a,b,c);
if (a + b <= c) or (b + c <= a) or (a + c <= b) then writeln ('Треугольника с
такими сторонами не существует')
else
begin
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('Площадь треугольника равна ',s:0:3)
end
end.