Fatal:语法错误,“。”预期但“;”找到

问题描述 投票:0回答:1
program Hello;
var

a,b,c,x,d: integer;
x1,x2: real;

begin

readln(a,b,c);

if a = 0 then
begin
    if b = 0 then
    begin
        if c = 0 then
        begin
            writeln('11');
        end
        else 
            writeln('21');
        end;
    end
    else
        writeln('31');
    end;
end
else
    d := b^2 - 4*a*c;

    if d < 0 then
    begin
        writeln('Нет Вещественных корней!');
    end
    else
        x1 := (-b + sqrt(d))/(2*a);
        x2 := (-b - sqrt(d))/(2*a);
        writeln('Первый Корень:' + x1 + ' ' + 'Второй Корень:' + x2);
    end;
end;
end.
pascal
1个回答
0
投票
8 end

显然,您的代码是要计算二次方程的解。我认为您应该做的是调整代码的布局,使其反映出来,然后正确地显示beginend。特别是,您的程序正在尝试检测a,b和d中的任何一个是否为零,如果是,则写一条诊断消息,否则用通常的公式计算根。

[不幸的是,您的beginend没有反映出来。要么需要执行整个以d := ...开头的块,要么都不执行任何块,因此,在前一行的else后面必须要有一个begin,例如在>

else begin d := b*b - 4*a*c; //b^2 - 4*a*c; if d < 0 then begin writeln('Нет Вещественных корней!'); end else begin x1 := (-b + sqrt(d))/(2*a); x2 := (-b - sqrt(d))/(2*a); // writeln('Первый Корень:' + x1 + ' ' + 'Второй Корень:' + x2); writeln('Первый Корень:', x1, ' Второй Корень:' , x2); end; end;

((您不说您使用的是哪个Pascal编译器,但以上内容修复了在FreePascal中标记为错误的两点。

如果您需要更多帮助,请在评论中提问。 
© www.soinside.com 2019 - 2024. All rights reserved.