Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2014, 17:42   #1
snejnbumer
Пользователь
 
Регистрация: 19.09.2014
Сообщений: 13
По умолчанию Решить квадратное уравнение в Delphi

Delphi даны коэффициенты квадратного уравнения ax в квадрате+bx +c=0 решить в delphi. Нужно срочно
snejnbumer вне форума Ответить с цитированием
Старый 19.09.2014, 18:52   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Алгоритм
1. Вводишь коэффициенты
2. Если a=0 - вырожденное, выход
2. Считаешь дискриминант
3. Если < 0 - нет решения, выход (можешь найти решение в комплексных числах)
4. Если = 0 - один корень, находишь, выход
5. Если > 0 - два корня, находишь, выход
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.09.2014, 19:01   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

А вот так почему бы не сделать ? Я сделал и нашел кучу ответов.
И еще, если там не Delphi , а Pascal - тоже годится. Только ввод и вывод сделать по другому.
Изображения
Тип файла: jpg поиск.jpg (29.1 Кб, 350 просмотров)
type_Oleg вне форума Ответить с цитированием
Старый 19.09.2014, 19:10   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Решить простое квадратное уравнение легче всего с помощью метода дискримината.
Делается это так:
1. Получаем сам дискриминат.
Код:
D:=Sqr(B) - 4*a*c;
, где D- дискриминат.
2. Далее проверяем дискриминат. Если D<0, то корней нет и некогда не будет. Парабала не имеет пересечения с осью Х. Если D=0, то корень один и считается по формуле:
Код:
x:=-b/(2*a);
Если D>0, то корня два и оба получаются по формулам:
Код:
x1:=(-b+Sqrt(D))/(2*a);
х2:=(-b-Sqrt(D))/(2*a);
Готово. Все переменные бери типа real. В строку и обратно преобразуются функциями: FloatToStr и StrToFloat.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 19.09.2014, 19:33   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

саша40, чтобы не усложнять оператор if, случай D=0 можно не выделять.
Будет считаться (-b+0)/(2*a) и т.д.
type_Oleg вне форума Ответить с цитированием
Старый 19.09.2014, 19:39   #6
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Код:
var Ha, Kou, xep, I_am, nocTynaJI, B , yHuBep:double;

begin
write ('BBeDuTe Ha: ');
readln(xep);
write ('BBeDuTe Kou: ');
readln(I_am);
write ('BBeDuTe nocTynaJI: ');
readln(B);
yHuBep:=0;
If (xep=yHuBep) then exit;
yHuBep:=I_am*I_am - 4*B*xep;
if yHuBep<0 then begin writeln('Tenepb TbI B ApMuu Hax__'); exit; end;
if yHuBep=0 then begin writeln('KopeHb 3JIa= ',-I_am/(2*xep)) end;
if yHuBep>0 then begin writeln('A ya TepyaIO KopHuuuuu  ',(-I_am+yHuBep)/(2*xep),' uuuuuu '
                               ,(-I_am-yHuBep)/(2*xep)) end;
readln;
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 19.09.2014, 19:42   #7
snejnbumer
Пользователь
 
Регистрация: 19.09.2014
Сообщений: 13
По умолчанию

получилось так
Код:
var a,b,c,x1,x2,d:real;
begin
a:=strtofloat(Edit1.text);
b:=strtofloat(Edit2.text);
c:=strtofloat(Edit3.text);
d:=sqr(b)-4*a*c;
if d>0 then x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a)
else if d=0 then x1:=-b/(2*a);
else x1:='íåò êîðíåé';
Edit4.Text:=floattostr(x1);
Edit5.Text:=floattostr(x2);
end;
else if d=0 then x1:=-b/(2*a); не правильно где я мог на путать

Последний раз редактировалось Stilet; 19.09.2014 в 20:57.
snejnbumer вне форума Ответить с цитированием
Старый 19.09.2014, 20:15   #8
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от snejnbumer Посмотреть сообщение
... где я мог на путать
Вот здесь
Код:
if d>0 then x1:=(-b+sqrt(d))/(2*a);
 x2:=(-b-sqrt(d))/(2*a)
 else if d=0 then x1:=-b/(2*a);
 else x1:='íåò êîðíå&#233 ;';
даже непонятно, что имелось в виду вот тут
Код:
else x1:='íåò êîðíå&#233 ;';
У вас что, x1 присваиватся какая-то строка текста ?

Вот, так работает например
Код:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,x1,x2,d:real;
begin
 a:=StrToFloat(Edit1.Text);
 b:=StrToFloat(Edit2.Text);
 c:=StrToFloat(Edit3.Text);
 d:=b*b-4*a*c;
 if d<0 then
  begin
   Edit4.Text:='корни мнимые';
   Edit5.Text:='корни мнимые';
   Exit;      //  все, выход из обработчика
  end;
 x1:=(-b-Sqrt(d))/(2*a);
 x2:=(-b+Sqrt(d))/(2*a);
 Edit4.Text:=FloatToStr(x1);
 Edit5.Text:=FloatToStr(x2);
end;

Последний раз редактировалось type_Oleg; 19.09.2014 в 20:20.
type_Oleg вне форума Ответить с цитированием
Старый 19.09.2014, 21:51   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
Вопрос

Эт вот так, штоль?

Писал одним пальцем, лёжа на диване.
Вложения
Тип файла: rar p265685.rar (165.5 Кб, 73 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal. Арифметическое выражение. Решить квадратное уравнение и посчитать выражение, используя вычисленные корни. dauletsergazin Паскаль, Turbo Pascal, PascalABC.NET 4 13.11.2017 11:55
Даны три матрицы A, B, C. Решить квадратное уравнение Amin*x^2 + Bmin*x + Cmin = 0 (Pascal ABC.NET) марфаз Паскаль, Turbo Pascal, PascalABC.NET 13 25.12.2013 21:34
Квадратное уравнение Mrsqler Microsoft Office Excel 1 16.02.2012 23:40
Квадратное уравнение turtles Общие вопросы по Java, Java SE, Kotlin 1 14.04.2011 21:56