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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2009, 14:49   #1
Котакот
Пользователь
 
Аватар для Котакот
 
Регистрация: 29.01.2009
Сообщений: 17
По умолчанию Решение биквадратного уравнения - Delphi знатокам

Вообщем, забился с преподом на 3 зачёта, что до завтра накатаю прогу по решению биквадратного уравнения. Вот сижу щас, лома голову. Я конечно буду стараться сам, но если у кого есть идеи как всё это счастье реализовать, буду рад)

Последний раз редактировалось Котакот; 29.01.2009 в 17:30.
Котакот вне форума Ответить с цитированием
Старый 29.01.2009, 14:54   #2
Котакот
Пользователь
 
Аватар для Котакот
 
Регистрация: 29.01.2009
Сообщений: 17
По умолчанию

Пишу в Delphi 7. В форме)
Котакот вне форума Ответить с цитированием
Старый 29.01.2009, 15:35   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

А в чем собственно проблема? 3 поля ввода для коэффициентов, 4 поля для корней, 1 кнопка. Алгоритм примитивный, как на бумаге решаешь, так и пишешь. Еще наверно надо ограничить символы, допустимые для ввода коэффициентов.
puporev вне форума Ответить с цитированием
Старый 29.01.2009, 16:46   #4
Котакот
Пользователь
 
Аватар для Котакот
 
Регистрация: 29.01.2009
Сообщений: 17
По умолчанию

Ага, ну вот я написал такую штуку:

procedure TForm1.BitBtn1Click(Sender: TObject);
var a,b,c: real;
var d{дискриминант},x,f: real;
var r1,r2,r3,r4: 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:='Уравнение не имеет действительных решений';
end
else
x:=(-b-sqrt(d))/(2*a);
f:=(-b+sqrt(d))/(2*a);
if (x<0) and (f<0) then begin Edit4.text:='Уравнение не имеет действительных решений, т.к. оба диск. <0';
end
else
if (x>=0) and (f>=0) then begin
r1:=sqrt(x);
r2:=-sqrt(x);
r3:=sqrt(f);
r4:=-sqrt(f);
Edit4.text:='x1 = '+floattostrF(r1,fffixed,6,2)+'x2 = '+floattostrF(r2,fffixed,6,2)+'x3 = '+floattostrF(r3,fffixed,6,2)+'x4 = '+floattostrF(r4,fffixed,6,2);
end
else
if (x>=0) and (f<0) then begin
r1:=sqrt(x);
r2:=-sqrt(x);
Edit4.text:='x1 = '+floattostrF(r1,fffixed,6,2)+'x2 = '+floattostrF(r2,fffixed,6,2);
end
else
if (x<0) and (f>=0) then begin
r3:=sqrt(f);
r4:=-sqrt(f);
Edit4.text:='x1 = '+floattostrF(r3,fffixed,6,2)+'x2 = '+floattostrF(r4,fffixed,6,2);
end;

Но прога, то и дело валится :/
Котакот вне форума Ответить с цитированием
Старый 29.01.2009, 16:51   #5
Котакот
Пользователь
 
Аватар для Котакот
 
Регистрация: 29.01.2009
Сообщений: 17
По умолчанию

+ я задал MaskEdit,ы для ввода и в Mask Editore прописал допустимые для ввода значения #9999999;1; Как прописать, чтобы можно было вводить и дробные?
Котакот вне форума Ответить с цитированием
Старый 29.01.2009, 16:56   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Я в Делфи не очень, даже хуже. Вот есть два алгоритма на Паскале, оба рабочие. Посмотри, где у тебя принципиальные ошибки. А насчет MaskEdit почитай что-нибудь, хотя бы 100 компонентов Делфи, есть на этом сайте.
Вложения
Тип файла: doc Биквадратное уравнение.doc (30.5 Кб, 57 просмотров)
puporev вне форума Ответить с цитированием
Старый 29.01.2009, 17:00   #7
Котакот
Пользователь
 
Аватар для Котакот
 
Регистрация: 29.01.2009
Сообщений: 17
По умолчанию



такую ошибку кажет, когда у программы дело до вычислений доходит...

Цитата:
Сообщение от puporev Посмотреть сообщение
Я в Делфи не очень, даже хуже. Вот есть два алгоритма на Паскале, оба рабочие. Посмотри, где у тебя принципиальные ошибки. А насчет MaskEdit почитай что-нибудь, хотя бы 100 компонентов Делфи, есть на этом сайте.
ну в твоих исходниках, код примерно такого же толка как и у меня получился)

Последний раз редактировалось Котакот; 29.01.2009 в 17:08.
Котакот вне форума Ответить с цитированием
Старый 29.01.2009, 17:08   #8
Котакот
Пользователь
 
Аватар для Котакот
 
Регистрация: 29.01.2009
Сообщений: 17
По умолчанию

Как задать в Mask Editore дробные, никак не найду. Если кто знает подскажите, я пока ищу )
Котакот вне форума Ответить с цитированием
Старый 29.01.2009, 17:32   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот здесь неправильно.
Код:
if d<0 then
Edit4.text:='Уравнение не имеет действительных решений'
else
  begin
    x:=(-b-sqrt(d))/(2*a);
    f:=(-b+sqrt(d))/(2*a);
  end;
Так работает.
puporev вне форума Ответить с цитированием
Старый 29.01.2009, 17:42   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Напиши такие процедуры для первых трех Эдитов и не парься, я тоже не нашел, как делать маску вещественных чисел, рекомендуют именно так делать.
Код:
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
  #8,'0'..'9' :  ; // цифры и <Back Space>

       '.',',': // разделитель целой и дробной частей числа
                begin
                  if Key <> DecimalSeparator then
                  Key := DecimalSeparator; // заменим разделитель на допустимый
                  if Pos(DecimalSeparator,Edit3.Text) <> 0
                  then Key := Chr(0); // запрет ввода второго разделителя
                end;
           '-':    // минус можно ввести только первым символом,
                // т.е. когда ячейка пустая
                if Length(Edit3.Text) <> 0
                      then Key := Chr(0);

        else   // остальные символы запрещены
               key := Chr(0);
    end;
end;
puporev вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение биквадратного уравнения Паскаль.... КиношкА Помощь студентам 8 19.12.2008 01:25
решение уравнения с использованием суммы NSvirus Паскаль, Turbo Pascal, PascalABC.NET 4 11.11.2008 13:39
Решение уравнения Datrav Паскаль, Turbo Pascal, PascalABC.NET 2 06.06.2008 08:23
Решение квадратного уравнения Stiv Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 30.11.2007 15:15
Решение уравнения вида ax+by=1 :)) Solny6ko YasnoE Помощь студентам 4 14.06.2007 14:38