Pascal编译错误

时间:2017-05-19 21:06:04

标签: pascal

这是代码:

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是否为某些类型的三角形的数字。

3 个答案:

答案 0 :(得分:3)

如果要在条件为真时执行多个语句,则需要使用beginend对其进行包装。将它们放在同一行上不会自动将它们分组。因此,您需要beginend

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...