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.
end
。显然,您的代码是要计算二次方程的解。我认为您应该做的是调整代码的布局,使其反映出来,然后正确地显示begin
和end
。特别是,您的程序正在尝试检测a,b和d中的任何一个是否为零,如果是,则写一条诊断消息,否则用通常的公式计算根。
begin
和end
没有反映出来。要么需要执行整个以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中标记为错误的两点。
如果您需要更多帮助,请在评论中提问。