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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2010, 21:00   #1
VENOM217
 
Регистрация: 16.02.2010
Сообщений: 3
Печаль уравнение ax^4+cx^2=0 в Delphi

Написал такую штуку:

Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     begin
       case Key of
          #8,'0'..'9' :  ; // цифры и <Back Space>

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

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


procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  begin
     begin
       case Key of
          #8,'0'..'9' :  ; // цифры и <Back Space>

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

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

procedure TForm1.Button3Click(Sender: TObject);
Var
a,c,x,y:real;

begin
  a:= StrToInt (Edit1.Text);
  c:= StrToInt (Edit2.Text);
   if a=0 then
    Edit3.Text:= 'Нет решений! Повторите ввод а.'
   else
   if (a>0) and (c>0) then
    Edit3.Text:= 'Нет решений! Повторите ввод коэффициентов.'
    else
    if (a<0) and (c<0) then
    Edit3.Text:= 'Нет решений! Повторите ввод коэффициентов.'
    else

   begin
      x:= sqrt(c/a);
      y:= -sqrt(c/a);
      Edit3.Text:= 'x=0;' + 'x=' + floattostrF (x,fffixed,6,2) +';'+'x=' +floattostrF(y,fffixed,6,2);
   end;
end;

end.
но при вводе отрицательного числа он выдаёт:
Project Project1.exe raised exception clacc EInvalidOp with message 'Invalid floating point operation'.

Я думаю что-то напутал с типами переменных...

Последний раз редактировалось Stilet; 17.02.2010 в 08:34.
VENOM217 вне форума Ответить с цитированием
Старый 17.02.2010, 08:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
sqrt(c/a);
Видимо сдесь выдает...
Я бы условие выше переписал так:
Код:
if (a<0) or (c<0)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2010, 08:46   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Код:
  if (a*b)>=0 then
    begin
    z;=0;
    Edit3.Text:= 'Других решений нет! Повторите ввод коэффициентов.'
    else

   begin
      z:=0;
      x:= sqrt(-c/a);
      y:= -x;
   end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 17.02.2010 в 08:58.
evg_m вне форума Ответить с цитированием
Старый 17.02.2010, 19:00   #4
VENOM217
 
Регистрация: 16.02.2010
Сообщений: 3
По умолчанию

Цитата:
Я бы условие выше переписал так:
Код:
if (a<0) or (c<0)
если написать через or не получится верное решение, мне ведь нужно что бы одновременно коэффициенты а и с не были с одинаковым знаком, иначе он будет извлекать корень из отрицательного числа, что невозможно!

я считаю что я что-то напутал с типами переменных... мне нужно что бы он посчитал и выводил в поле Edit ответ.
Нужно что бы он считал отрицательные числа ( с положительными проблем не было, но при вводе отрицательного чсла вылетает ошибка)
VENOM217 вне форума Ответить с цитированием
Старый 17.02.2010, 19:12   #5
VENOM217
 
Регистрация: 16.02.2010
Сообщений: 3
По умолчанию

Безимени-1.jpg

вот моё математическое решение для наглядности
VENOM217 вне форума Ответить с цитированием
Старый 17.02.2010, 22:27   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

смотри 3 строку своего решения
x=0 или .... разве это не есть решение?!

x:= sqrt(-----c/a); (-) повторил чтобы было заметно
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 17.02.2010 в 22:33.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уравнение (pascal, Delphi) HouK Помощь студентам 5 11.11.2009 20:34
уравнение A*X=B CyberOrcX Помощь студентам 4 14.10.2009 16:12
Заданы две матрицы A3х3 и B4х4. Построить таблицу функций y=cx2+d при x є [0; 1] с шагом ∆х=0,1 moto74 Паскаль, Turbo Pascal, PascalABC.NET 17 06.04.2009 17:13
Арифметическое уравнение в Delphi sv2311 Помощь студентам 0 04.04.2009 14:54
Пожалуйста,помогите решить в Delphi уравнение... ALENA555 Помощь студентам 2 28.03.2009 16:17