|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Квадратное уравнение... (Положительные числа)
Здравствуете надо написать программу квадратного уравнения, чтобы a,b и c были положительными, я сделал что-то похожее, но программа все равно и считает при отрицательных, что исправить подскажите пожалуйста:
Код:
var a: real; b: real; c: real; d: real; x1: real; x2: real; begin try a:= StrToFloat(Edit1.Text); if a>=0 then begin ShowMessage('Число "а" положительно, решение разрешено'); end; a:= StrToFloat(Edit1.Text); if a<0 then begin ShowMessage('Число "а" неположительно, введите другое...'); a:= StrToFloat(Edit1.Text); end else b:= StrToFloat(Edit2.Text); if b<0 then begin ShowMessage('Число "b" неположительно, введите другое...'); b:= StrToFloat(Edit1.Text); end; if b>=0 then begin ShowMessage('Число "b" положительно, решение разрешено'); end else c:= StrToFloat(Edit3.Text); if c<0 then begin ShowMessage('Число "c" неположительно, введите другое...'); c:= StrToFloat(Edit1.Text); end; if c>=0 then begin ShowMessage('Число "c" положительно, решение разрешено'); end else d:= sqr(b)- 4*a*c; if d>=0 then begin x1:= (-b + sqrt(d))/(2*a); x2:= (-b - sqrt(d))/(2*a); Label4.Caption := 'x1='+ FloatToStrF(x1,ffFixed,6,2)+#13+ 'x2=' + FloatToStrF(x2,ffFixed,6,2); end else ShowMessage('Уравнение не имеет корней'); except on EConvertError do begin ShowMessage('Введите данные'); exit; end; end; end; end. Последний раз редактировалось Admin, 14.11.2010 в 18:14. |
#2
|
||||
|
||||
PHP код:
|
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
Чет не пойму, зачем столько раз записывать в переменные значения из EditX.text.
Не проще так: Код:
var fl:boolean; a:= StrToFloat(Edit1.Text); b:= StrToFloat(Edit2.Text); c:= StrToFloat(Edit3.Text); fl:=true; if a<0 then begin fl:=false; showmessage('A отрицательно, введите другое.'); end else showmessage('A подходит'); if b<0 then begin fl:=false; showmessage('b отрицательно, введите другое.'); end else showmessage('b подходит'); if c<0 then begin fl:=false; showmessage('C отрицательно, введите другое.'); end else showmessage('C подходит'); if fl then begin //тут решение уравнения end; jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
|||
|
|||
зачем так сложно????!!!!!!!!!!!!!!!!!!!!!
следуй примеру Konrad Код:
a:= StrToFloat(Edit1.Text); b:= StrToFloat(Edit2.Text); c:= StrToFloat(Edit3.Text); if (a>=0) and (b>=0) and (c>=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); Label4.Caption := 'x1='+ FloatToStrF(x1,ffFixed,6,2)+#13+ 'x2=' + FloatToStrF(x2,ffFixed,6,2); end; end; |
#6
|
|||
|
|||
Цитата:
А какой командой можно стереть значения корней? А то вводишь а=1 б=5 с=4, выдает корни, а потом вводишь другие числа они там в лэйбалах остаются...а как сделать что стирались?)) |
#7
|
|||
|
|||
Цитата:
Последний раз редактировалось Неопытный, 14.11.2010 в 23:34. |
#8
|
||||
|
||||
Я просто так подумал, что ему нужно чтоб прога для каждой буквы выводила "правильно" или "неправильно". Если этого не надо - то да, вариант Misterhomer'а лучше.
Чтоб стиралось - label4.Caption:=''; Только не пойму, в какой момент не стирается. По идеи после решения уравнения они и так должны поменяться. jmp $ ; Happy End! The Cake Is A Lie. |