Как в Lazarus (либо Delphi) решить квадратное уравнение ([tex]ax^2 + bx
Как в Lazarus (либо Delphi) решить квадратное уравнение (), когда ?
Задать свой вопрос1 ответ
Арсений Комолятов
Просто добавить условие, что разделять на 0 нельзя.
Delphi/Lazarus
------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
a, b, c, d, x1, x2: real;
begin
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);
c := StrToFloat(Edit3.Text);
if a lt;gt; 0 then
begin
d := sqr(b) - 4 * a * c;
if (d gt; 0) then
begin
x1 := (-b+sqrt(d))/(2*a);
x2 := (-b-sqrt(d))/(2*a);
Label1.Caption := 'x1 = ' + FloatToStr(x1);
Label2.Caption := 'x2 = ' + FloatToStr(x2);
end
else
if d = 0 then
begin
x1:=-b /(2*a);
x2:=x1;
Label1.Caption := 'x1 = ' + FloatToStr(x1);
Label2.Caption := 'x2 = ' + FloatToStr(x2);
end
else
if d lt; 0 then
ShowMessage('Корней нет');
end
else
if (a = 0) and (b = 0) and (c = 0) then
ShowMessage('X = хоть какое.')
else
if (a = 0) and (b = 0) then
ShowMessage('Решений нет.')
else
if (a = 0) then
begin
x1 := (-c)/b;
Label1.Caption := 'x = ' + FloatToStr(x1);
Label2.Caption := '';
end;
end;
Delphi/Lazarus
------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
a, b, c, d, x1, x2: real;
begin
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);
c := StrToFloat(Edit3.Text);
if a lt;gt; 0 then
begin
d := sqr(b) - 4 * a * c;
if (d gt; 0) then
begin
x1 := (-b+sqrt(d))/(2*a);
x2 := (-b-sqrt(d))/(2*a);
Label1.Caption := 'x1 = ' + FloatToStr(x1);
Label2.Caption := 'x2 = ' + FloatToStr(x2);
end
else
if d = 0 then
begin
x1:=-b /(2*a);
x2:=x1;
Label1.Caption := 'x1 = ' + FloatToStr(x1);
Label2.Caption := 'x2 = ' + FloatToStr(x2);
end
else
if d lt; 0 then
ShowMessage('Корней нет');
end
else
if (a = 0) and (b = 0) and (c = 0) then
ShowMessage('X = хоть какое.')
else
if (a = 0) and (b = 0) then
ShowMessage('Решений нет.')
else
if (a = 0) then
begin
x1 := (-c)/b;
Label1.Caption := 'x = ' + FloatToStr(x1);
Label2.Caption := '';
end;
end;
Широкорад
Константин
Нам дали задание, сделать так, чтобы при значении а = 0, уравнение всё одинаково решалось.
Кукояжный
Данил
И тогда получится уравнение: bx + c = 0
Камилла
Отредактировал.
Ксения
А ты знаешь команду остановки решения задания в определенном месте?
Денчик Гузихин
Есть break для прерывания цикла и exit для прерывания процедуры, но их обычно избегают.
Алексей Клементановский
Просто, когда дискриминант меньше нуля, оно пишет "Нет корней", но всё одинаково решает и выводит ответ, а мне необходимо, чтоб после этой фразы у меня не было решения
Пашок Жвирблинский
Он ничего не решает. Наверно просто результаты предшествующего решения остались. Просто сотри их. Поменяй строку if d < 0 then ShowMessage('Корней нет'); на if d < 0 then begin Label1.Caption := ''; Label2.Caption := ''; ShowMessage('Корней нет'); end;
Сема Яйсемов
Хорошо
Вадим Рысцов
То же самое. Оно поначалу пишет "Корней нет" и Label пустые, а после нажатия "ОК", оно мне выбивает какой-то ответ.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
10) Килограмм конфет дороже килограмма печенья на 52 р. За 8
Математика.
Во сколько раз число атомов кислорода в земной коре больше числа
Химия.
Составить монолог от имени дневника двоечника 7-10 предложений
Русский язык.
Облако тегов