这是代码:
program pi18;
var
a,b,c,P:real;
begin
read(a,b,c);
if(a+b<c) or (b+c<a) or (a+c<b) then
writeln('Nu exista asa triunghi')
else
begin
P:=a+b+c;
if(a=b) and (a=c) then
write('Triunghiul este echil')
else
if(sqr(a) = sqr(b) + sqr(c)) or (sqr(b) = sqr(a) + sqr(c)) or (sqr(c) = sqr(a) + sqr(b)) then
write('Triunghiul este dreptunghic'); readln();
else
write('Triunghiul este arbitrar'); readln();
end;
writeln('Perimetrul este: ', P);
end.
我有这个错误:
语法错误,“;”预期但“ELSE”发现
此代码适用于: - 说三角形的周长。 - 比较a,b,c是否为某些类型的三角形的数字。
答案 0 :(得分:3)
如果要在条件为真时执行多个语句,则需要使用begin
和end
对其进行包装。将它们放在同一行上不会自动将它们分组。因此,您需要begin
和end
:
write('Triunghiul este dreptunghic'); readln();
和
write('Triunghiul este arbitrar'); readln();
由于您没有这样做,它只是将第一个语句作为if
块处理。当它看到else
语句时,它会报告错误,因为没有前面的if
语句与之匹配。
答案 1 :(得分:1)
在Pascal中,如果你之间有多个语句,那么你仍然需要在它们周围开始和结束:
if(sqr(a) = sqr(b) + sqr(c)) or (sqr(b) = sqr(a) + sqr(c)) or (sqr(c) = sqr(a) + sqr(b)) then
begin
write('Triunghiul este dreptunghic');
readln();
end
else
答案 2 :(得分:0)
您的代码在begin
后面的多个语句周围缺少end
- if
:
if(a=b) and (a=c) then
write('Triunghiul este echil') // single statement, no begin-end required (but possible)
else if(sqr(a) = sqr(b) + sqr(c)) or (sqr(b) = sqr(a) + sqr(c)) or (sqr(c) = sqr(a) + sqr(b)) then
begin
write('Triunghiul este dreptunghic');
readln();
end
else
begin
write('Triunghiul este arbitrar');
readln();
end;
为了使这更加一致,我甚至会这样做:
if(a=b) and (a=c) then
begin
write('Triunghiul este echil')
end
else etc...