Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.116.40.47] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Надо сравнить коды и проверить какой-то набор входных a,b,c. Вот мой код:
procedure TForm1.Button1Click(Sender: TObject); var x1, x2, y1, y2, x3, x4, a, b, c, d: Real; begin // Edt4.Text := ''; // Edt5.Text := ''; // Edt6.Text := ''; // Edt7.Text := ''; //lbl1.Caption a := 1;//StrToFloat(Edt1.Text); b := 1;//StrToFloat(Edt2.Text); c := 1;//StrToFloat(Edt3.Text); d := b * b - 4 * a * c; if (a = 0) then begin if (b = 0) then lbl1.Caption := 'Нет решений' else begin lbl1.Caption := 'Два корня'; y1 := -c / b; // end; if (y1<0) then begin lbl1.Caption := 'Нет решений' end else if (y1>0) then begin x1 := Sqrt(y1); x2 :=-Sqrt(y1); /// Edt4.Text := FloatToStr(x1); // Edt5.Text := FloatToStr(x2); end end end else begin if (d=0) then begin if (y1<0) then begin lbl1.Caption := 'Íåò ðåøåíèé'; end else if (y1>0) then begin y1 := (-b)/(2 * a); lbl1.Caption := 'Äâà êîðíÿ'; x1 := Sqrt(y1); x2 := -Sqrt(y1); //Edt4.Text := FloatToStr(x1); // Edt6.Text := FloatToStr(x2); end; end else if (d < 0) then begin lbl1.Caption := 'Дискриминант меньше нуля,нет корней'; end else if (d > 0) then begin y1 := (-b + Sqrt(d)) / (2 * a); y2 := (-b - Sqrt(d)) / (2 * a); end else if (y1<0) and (y2<0) then begin lbl1.Caption := 'Нет решений'; end else if (y1>0) and (y2<0) then begin lbl1.Caption := 'Два корня'; x1 := Sqrt(y1); x3 := -Sqrt(y1); //Edt4.Text := FloatToStr(x1); //Edt6.Text := FloatToStr(x3); end else if (y1<0) and (y2>0) then begin lbl1.Caption := 'Два корня'; x2 := Sqrt(y2); x4 := -Sqrt(y2); //edt5.Text := FloatToStr(x2); //edt7.Text := FloatToStr(x4); end else if (y1>0) and (y2>0) then begin lbl1.Caption := 'Четыре корня'; x1 := Sqrt(y1); x2 := Sqrt(y2); x3 := -Sqrt(y1); x4 := -Sqrt(y2); //Edt4.Text := FloatToStr(x1); //edt5.Text := FloatToStr(x2); //Edt6.Text := FloatToStr(x3); //Edt7.Text := FloatToStr(x4); end; end; end; end. Добавлено Вот поправленная: procedure TForm1.Button1Click(Sender: TObject); var x1, x2, y1, y2, x3, x4, a, b, c, d: Real; begin // Edt4.Text := ''; // Edt5.Text := ''; // Edt6.Text := ''; // Edt7.Text := ''; //lbl1.Caption a := 1;//StrToFloat(Edt1.Text); b := 4;//StrToFloat(Edt2.Text); c := -21;//StrToFloat(Edt3.Text); d := b * b - 4 * a * c; if (a = 0) then begin if (b = 0) then lbl1.Caption := 'Нет решений' else begin lbl1.Caption := 'Два корня'; y1 := -c / b; // end; if (y1<0) then lbl1.Caption := 'Нет решений' else if (y1>0) then begin x1 := Sqrt(y1); x2 :=-Sqrt(y1); /// Edt4.Text := FloatToStr(x1); // Edt5.Text := FloatToStr(x2); end end end else begin if (d=0) then begin if (y1<0) then lbl1.Caption := 'Нет решений' else if (y1>0) then begin y1 := (-b)/(2 * a); lbl1.Caption := 'Два корня'; x1 := Sqrt(y1); x2 := -Sqrt(y1); //Edt4.Text := FloatToStr(x1); // Edt6.Text := FloatToStr(x2); end; end else if (d < 0) then lbl1.Caption := 'Дискриминант меньше нуля,нет корней' else if (d > 0) then begin y1 := (-b + Sqrt(d)) / (2 * a); y2 := (-b - Sqrt(d)) / (2 * a); // end // else if (y1<0) and (y2<0) then lbl1.Caption := 'Нет решений' else if (y1>0) and (y2<0) then begin lbl1.Caption := 'Два корня'; x1 := Sqrt(y1); x3 := -Sqrt(y1); //Edt4.Text := FloatToStr(x1); //Edt6.Text := FloatToStr(x3); end else if (y1<0) and (y2>0) then begin lbl1.Caption := 'Два корня'; x2 := Sqrt(y2); x4 := -Sqrt(y2); //edt5.Text := FloatToStr(x2); //edt7.Text := FloatToStr(x4); end else if (y1>0) and (y2>0) then begin lbl1.Caption := 'Четыре корня'; x1 := Sqrt(y1); x2 := Sqrt(y2); x3 := -Sqrt(y1); x4 := -Sqrt(y2); //Edt4.Text := FloatToStr(x1); //edt5.Text := FloatToStr(x2); //Edt6.Text := FloatToStr(x3); //Edt7.Text := FloatToStr(x4); end; end; end; end; end. |
Сообщ.
#17
,
|
|
|
if (d > 0) then begin y1 := (-b + Sqrt(d)) / (2 * a); y2 := (-b - Sqrt(d)) / (2 * a); end Я end поставил в конец всех условий, а begin оставил, в итогевсе работает без ошибок |