procedure TForm1.btn1Click(Sender: TObject);
var a,b,c,d,x1,x2:real;
begin
a:=StrToFloat(edt1.text);
b:=StrToFloat(edt2.text);
c:=StrToFloat(edt3.text);
d:=Sqr(b)-4*a*c;
if d < 0 then lbl5.Caption:='Êîðíåé íåò' else
x1:=(-b-sqrt(d))/(2*a);
x2:=(-b+sqrt(d))/(2*a);
lbl5.caption:=FloatToStr(x1);
lbl5.Caption:=FloatToStr(x2);
end;
end.
Другие языки программирования и технологии
Что не так с кодом pascal/delphi
Проблема в данном коде заключается в том, что если дискриминант меньше нуля, то переменные x1 и x2 не будут проинициализированы, но в блоке кода после этого они используются в вызовах функций FloatToStr. Это может привести к ошибке выполнения программы.
Чтобы решить эту проблему, нужно добавить условие, которое проверяет, является ли дискриминант меньше нуля, и если это так, то выводить соответствующее сообщение об ошибке. Вот исправленный код на Pascal/Delphi:
procedure TForm1.btn1Click(Sender: TObject);
var
a, b, c, d, x1, x2: real;
begin
a := StrToFloat(edt1.text);
b := StrToFloat(edt2.text);
c := StrToFloat(edt3.text);
d := Sqr(b) - 4 * a * c;
if d < 0 then
begin
lbl5.Caption := 'Корней нет';
end
else
begin
x1 := (-b - sqrt(d)) / (2 * a);
x2 := (-b + sqrt(d)) / (2 * a);
lbl5.caption := FloatToStr(x1);
lbl6.Caption := FloatToStr(x2);
end;
end;
end.
В этом коде добавлен блок кода с условием, который проверяет, является ли дискриминант меньше нуля. Если это так, то программа выводит сообщение об ошибке. Если дискриминант больше или равен нулю, то программа вычисляет корни и выводит их значения.
Чтобы решить эту проблему, нужно добавить условие, которое проверяет, является ли дискриминант меньше нуля, и если это так, то выводить соответствующее сообщение об ошибке. Вот исправленный код на Pascal/Delphi:
procedure TForm1.btn1Click(Sender: TObject);
var
a, b, c, d, x1, x2: real;
begin
a := StrToFloat(edt1.text);
b := StrToFloat(edt2.text);
c := StrToFloat(edt3.text);
d := Sqr(b) - 4 * a * c;
if d < 0 then
begin
lbl5.Caption := 'Корней нет';
end
else
begin
x1 := (-b - sqrt(d)) / (2 * a);
x2 := (-b + sqrt(d)) / (2 * a);
lbl5.caption := FloatToStr(x1);
lbl6.Caption := FloatToStr(x2);
end;
end;
end.
В этом коде добавлен блок кода с условием, который проверяет, является ли дискриминант меньше нуля. Если это так, то программа выводит сообщение об ошибке. Если дискриминант больше или равен нулю, то программа вычисляет корни и выводит их значения.
В коде Pascal/Delphi, который вы предоставили, есть две проблемы:
Если дискриминант (переменная d) меньше нуля, то программа пытается вывести значение переменной x1 в метке lbl5.Caption. Это приведет к ошибке, поскольку x1 не инициализирована. Вместо этого нужно вывести сообщение о том, что уравнение не имеет действительных корней.
После вычисления значения для lbl5.Caption для переменной x1, значение переменной x2 перезаписывается, поскольку дважды присваивается значение метке lbl5.Caption. Вместо этого значение переменной x2 должно быть выведено в другую метку.
Исправленный код выглядит так:
Если дискриминант (переменная d) меньше нуля, то программа пытается вывести значение переменной x1 в метке lbl5.Caption. Это приведет к ошибке, поскольку x1 не инициализирована. Вместо этого нужно вывести сообщение о том, что уравнение не имеет действительных корней.
После вычисления значения для lbl5.Caption для переменной x1, значение переменной x2 перезаписывается, поскольку дважды присваивается значение метке lbl5.Caption. Вместо этого значение переменной x2 должно быть выведено в другую метку.
Исправленный код выглядит так:
procedure TForm1.btn1Click(Sender: TObject);
var
a, b, c, d, x1, x2: Real;
begin
a := StrToFloat(edt1.Text);
b := StrToFloat(edt2.Text);
c := StrToFloat(edt3.Text);
d := Sqr(b) - 4 * a * c;
if d < 0 then
lbl5.Caption := 'Уравнение не имеет действительных корней'
else
begin
x1 := (-b - Sqrt(d)) / (2 * a);
x2 := (-b + Sqrt(d)) / (2 * a);
lbl5.Caption := FloatToStr(x1);
lbl6.Caption := FloatToStr(x2);
end;
end;
Этот код вычисляет значения корней квадратного уравнения ax^2 + bx + c = 0 для введенных значений a, b и c, используя формулу дискриминанта. Если дискриминант отрицательный, то выводится сообщение о том, что уравнение не имеет действительных корней. Если дискриминант положительный или равен нулю, то вычисляются значения корней и выводятся в метки lbl5.Caption и lbl6.Caption.Похожие вопросы
- нужен генератор двоичного кода (Pascal)
- Кто знает как передаются параметры в процедуру ? (Pascal/Delphi)
- для чего используют языки програмиирования: С++,Java, Object Pascal(Delphi), C,C#, PHP.если можно то по несколько примеро
- Я в 8-ом классе,хочу после девятого пойти на программиста,т.е изучить c++,pascal,delphi и т д
- Помогите с кодом в Delphi, пожалуйста!
- Нужен код под delphi 7, которая будет определять серийный номер винчестера в XP и Vista ...Куплю
- Объяснить что делает переменная в коде на delphi
- Помогите с кодом Pascal; создание и запись в txt-файл
- Помогите сделать код Pascal ABC
- Согласны с этим - Глубинные причины ненависти к Delphi/Pascal ?