Другие языки программирования и технологии
по делфи прога нахождение квадратного корня( ошибка в проге) помогите найти и исправить
unit Unit1diskriminant; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label3: TLabel; Label4: TLabel; Label5: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure SqRoot(a,b,c : real; var xl, x2 : real; var ok : boolean); { a,b,c — коэффициенты уравнения x1,x2 — корни уравнения ok = True — решение есть ok = False — решения нет } var d : real; // дискриминант begin begin d:= Sqr(b) - 4*a*c; if d < 0 then ok := False // уравнение не имеет решения else ok := True; xl := (-b + Sqrt(d)) / (2*a); x2 := (b + Sqrt(d)) / (2*a) ; end; procedure TForm1.Button1Click(Sender: TObject); var k1,k2: real; // корни уравнения rez: boolean; // True —решение есть, False —решения нет; mes:string; begin SqRoot(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text) , StrToFloat(Edit3.Text) , k1,k2,rez); if rez then mes := 'Корни уравнения' + #13 + 'x1='+FloatToStrF(k1,ffGeneral, 4,2)+#13+ 'x2='+FloatToStrF(k2,ffGeneral,4,2)+#13 else mes := 'Уравнение не имеет решения'; label5.Caption := mes; end; end. (короче когда ввожу значение a=1 b=4 c=6 выскакивает ошибка projec project1diskrimtnant.exe raised exception class EInvaled with message 'invalid floating point opertion'. Process stoped. Use step or run to continue) а когда ввожу -5 , 4 , 6 выводит корни
в формуле для x2 отсутствует минус перед b, а перед корнем из дискриминанта должен быть не плюс, а минус
Должно быть x2 := (-b - sqrt (d)) / (2 * a)
Должно быть x2 := (-b - sqrt (d)) / (2 * a)
A кто будет дискриминант проверять на меньше нуля? Все законно, что AV получаете. Вернне, скажем так, это не проверка
if d < 0 then
ok := False // уравнение не имеет решения
else
ok := True;
Вы только установили признак Ok, а вот корень из отрицательного числа все равно извлекаете
xl := (-b + Sqrt(d)) / (2*a); x2 := (b + Sqrt(d)) / (2*a) ;
if d < 0 then
ok := False // уравнение не имеет решения
else
ok := True;
Вы только установили признак Ok, а вот корень из отрицательного числа все равно извлекаете
xl := (-b + Sqrt(d)) / (2*a); x2 := (b + Sqrt(d)) / (2*a) ;
чувак, ты походу забыл указать, что
x1, b, a,с, x2: real
x1, b, a,с, x2: real
procedure SqRoot(a,b,c : real; var xl, x2 : real; var ok : boolean);
{ a,b,c — коэффициенты уравнения x1,x2 — корни уравнения
ok = True — решение есть ok = False — решения нет }
var
d : real; // дискриминант begin
begin
d:= Sqr(b) - 4*a*c; if d < 0 then
ok := False // уравнение не имеет решения
else
ok := True;
if ok then
Begin
xl := (-b + Sqrt(d)) / (2*a);
x2 := (b + Sqrt(d)) / (2*a) ;
End;
end;
{ a,b,c — коэффициенты уравнения x1,x2 — корни уравнения
ok = True — решение есть ok = False — решения нет }
var
d : real; // дискриминант begin
begin
d:= Sqr(b) - 4*a*c; if d < 0 then
ok := False // уравнение не имеет решения
else
ok := True;
if ok then
Begin
xl := (-b + Sqrt(d)) / (2*a);
x2 := (b + Sqrt(d)) / (2*a) ;
End;
end;
begin
d:= Sqr(b) - 4*a*c; if d < 0
then ok := False // уравнение не имеет решения
else
begin // +это
ok := True;
xl := (-b + Sqrt(d)) / (2*a); x2 := (b + Sqrt(d)) / (2*a) ;
end; //+это
end;
d:= Sqr(b) - 4*a*c; if d < 0
then ok := False // уравнение не имеет решения
else
begin // +это
ok := True;
xl := (-b + Sqrt(d)) / (2*a); x2 := (b + Sqrt(d)) / (2*a) ;
end; //+это
end;
Похожие вопросы
- помогите найти и исправить ошибку в коде СИ
- Поможете найти и исправить тут ошибку. (СИ программирование)
- Помогите найти ошибку в коде. делфи
- помогите найти. как прога для создание сайта самая простая и эффективная для новичка,без знания языка прог-ния
- помогите найти прогу
- Помогите найти прогу!! ! Очень срочно нужно!!!
- помогите найти прогу чтоб взломать чужой компьютер? помогите
- Помогите в паскале Исправить ошибку?
- Помогите найти ошибку Delphi легкая программка
- Помогите найти ошибку в программе и исправить ее.