Как в Lazarus (или Delphi) решить квадратное уравнение (), когда ?
Просто добавить условие, что делить на 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 <> 0 then begin d := sqr(b) - 4 * a * c; if (d > 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 < 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 пустые, а после нажатия "ОК", оно мне выбивает какой-то ответ.