Как в 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
Статьи
Информатика
Статьи
Последние вопросы
задание экономиоти
Рассмотри ситуацию: человек живёт на Крайнем Се-вере. С помощью каких
Экономика.
Человек живет на Крайнем Севере. С помощью каких благ удовлетворяются потребности
Экономика.
там лежат три яйца.у дома рос клен.Это гнездо сойки.на клёне гнездо
Русский язык.
Тыныштық күйіндегі карусель 35 с-та 3,0 рад/с бұрыштық жылдамдықпен үдей қозғалады.
Разные вопросы.
Сочинение на тему "Русский язык не сможет умереть!"
Математика.
Приветствую!
Меня зовут Станислав, я представляю компанию under.site.
Хотел бы предложить интересное решение
Разные вопросы.
Масса трёх одинаковых пакетов чая 180г чему равна масса
Математика.
Газообразный аммиак объёмом 2.24 л (н.у.) был полностью поглощён 14.68 мл
Химия.
Упражнение 2 Выпишите глаголы и вставьте пропущенные буквы
Русский язык.
Радиус окружности, описанной около равностороннего треугольника, равен 6. Найдите сторону треугольника
Геометрия.
Облако тегов