Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.11.2010, 18:06
Неопытный Неопытный вне форума
Прохожий
 
Регистрация: 14.11.2010
Сообщения: 10
Репутация: 10
По умолчанию Квадратное уравнение... (Положительные числа)

Здравствуете надо написать программу квадратного уравнения, чтобы 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: Пользуемся тегами!

Последний раз редактировалось Admin, 14.11.2010 в 18:14.
Ответить с цитированием
  #2  
Старый 14.11.2010, 20:45
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

PHP код:
if (a>=0)and(b>=0)and(c>=0then
begin
//решаем уравнение;
end
else showmessage('Ужесть, какое-то с чисел меньше нуля :('); 
Ответить с цитированием
  #3  
Старый 14.11.2010, 21:41
Неопытный Неопытный вне форума
Прохожий
 
Регистрация: 14.11.2010
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Konrad
PHP код:
if (a>=0)and(b>=0)and(c>=0then
begin
//решаем уравнение;
end
else showmessage('Ужесть, какое-то с чисел меньше нуля :('); 
А не могли бы вы скопировать мою программу и как туда это вписать, а то опять ерунда блин
Ответить с цитированием
  #4  
Старый 14.11.2010, 22:49
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Чет не пойму, зачем столько раз записывать в переменные значения из 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  
Старый 14.11.2010, 23:22
Misterhomer Misterhomer вне форума
Прохожий
 
Регистрация: 30.12.2009
Сообщения: 22
Репутация: 10
По умолчанию

зачем так сложно????!!!!!!!!!!!!!!!!!!!!!
следуй примеру 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  
Старый 14.11.2010, 23:31
Неопытный Неопытный вне форума
Прохожий
 
Регистрация: 14.11.2010
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Чет не пойму, зачем столько раз записывать в переменные значения из 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;
Спасибо большое! Где тут спасибо тыкнуть ))
А какой командой можно стереть значения корней? А то вводишь а=1 б=5 с=4, выдает корни, а потом вводишь другие числа они там в лэйбалах остаются...а как сделать что стирались?))
Ответить с цитированием
  #7  
Старый 14.11.2010, 23:32
Неопытный Неопытный вне форума
Прохожий
 
Регистрация: 14.11.2010
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Misterhomer
зачем так сложно????!!!!!!!!!!!!!!!!!!!!!
следуй примеру 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;
Не знаю ( спасибо...все варианты попробую... А что это программа с отрицательными работать не будет да? только 0 или выше?

Последний раз редактировалось Неопытный, 14.11.2010 в 23:34.
Ответить с цитированием
  #8  
Старый 14.11.2010, 23:49
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я просто так подумал, что ему нужно чтоб прога для каждой буквы выводила "правильно" или "неправильно". Если этого не надо - то да, вариант Misterhomer'а лучше.
Чтоб стиралось - label4.Caption:='';
Только не пойму, в какой момент не стирается. По идеи после решения уравнения они и так должны поменяться.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter