Как в Lazarus (либо Delphi) решить квадратное уравнение ([tex]ax^2 + bx

Как в Lazarus (либо Delphi) решить квадратное уравнение (ax^2 + bx + c = 0), когда ax^2 = 0 ?

Задать свой вопрос
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;
Широкорад Константин
Нам дали задание, сделать так, чтобы при значении а = 0, уравнение всё одинаково решалось.
Кукояжный Данил
И тогда получится уравнение: bx + c = 0
Камилла
Отредактировал.
Ксения
А ты знаешь команду остановки решения задания в определенном месте?
Денчик Гузихин
Есть break для прерывания цикла и exit для прерывания процедуры, но их обычно избегают.
Алексей Клементановский
Просто, когда дискриминант меньше нуля, оно пишет "Нет корней", но всё одинаково решает и выводит ответ, а мне необходимо, чтоб после этой фразы у меня не было решения
Пашок Жвирблинский
Он ничего не решает. Наверно просто результаты предшествующего решения остались. Просто сотри их. Поменяй строку if d < 0 then ShowMessage('Корней нет'); на if d < 0 then begin Label1.Caption := ''; Label2.Caption := ''; ShowMessage('Корней нет'); end;
Сема Яйсемов
Хорошо
Вадим Рысцов
То же самое. Оно поначалу пишет "Корней нет" и Label пустые, а после нажатия "ОК", оно мне выбивает какой-то ответ.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт