На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> расчет корней биквадратного уравнения
    Цитата Artem812 @
    Тогда почему высказывает ошибка, или у Вас все работает без ошибок?
    Надо сравнить коды и проверить какой-то набор входных a,b,c. Вот мой код:
    ExpandedWrap disabled
      procedure TForm1.Button1Click(Sender: TObject);
      var x1, x2, y1, y2, x3, x4, a, b, c, d: Real;
      begin
      // Edt4.Text := '';
      // Edt5.Text := '';
      // Edt6.Text := '';
      // Edt7.Text := '';
        //lbl1.Caption
        a := 1;//StrToFloat(Edt1.Text);
        b := 1;//StrToFloat(Edt2.Text);
        c := 1;//StrToFloat(Edt3.Text);
        d := b * b - 4 * a * c;
        if (a = 0) then
        begin
          if (b = 0) then
              lbl1.Caption := 'Нет решений'
          else
          begin
              lbl1.Caption := 'Два корня';
              y1 := -c / b;
      //    end;
              if (y1<0) then
              begin
                  lbl1.Caption := 'Нет решений'
              end
              else
                if (y1>0) then
                begin
                    x1 := Sqrt(y1);
                    x2 :=-Sqrt(y1);
      ///             Edt4.Text := FloatToStr(x1);
      //              Edt5.Text := FloatToStr(x2);
                  end
          end
        end
        else
        begin
         if (d=0) then
         begin
            if (y1<0) then
            begin
              lbl1.Caption := 'Íåò ðåøåíèé';
            end
            else
              if (y1>0) then
              begin
                y1 := (-b)/(2 * a);
                lbl1.Caption := 'Äâà êîðíÿ';
                x1 := Sqrt(y1);
                x2 := -Sqrt(y1);
                //Edt4.Text := FloatToStr(x1);
      //        Edt6.Text := FloatToStr(x2);
          end;
         end
         else
          if (d < 0) then
          begin
            lbl1.Caption := 'Дискриминант меньше нуля,нет корней';
          end
          else
            if (d > 0) then
            begin
                y1 := (-b + Sqrt(d)) / (2 * a);
                y2 := (-b - Sqrt(d)) / (2 * a);
            end
            else
          if (y1<0) and (y2<0) then
          begin
                lbl1.Caption := 'Нет решений';
          end
          else
              if (y1>0) and (y2<0) then
                  begin
                     lbl1.Caption := 'Два корня';
                     x1 := Sqrt(y1);
                     x3 := -Sqrt(y1);
                     //Edt4.Text := FloatToStr(x1);
                     //Edt6.Text := FloatToStr(x3);
                  end
                  else
                    if (y1<0) and (y2>0) then
                    begin
                     lbl1.Caption := 'Два корня';
                     x2 := Sqrt(y2);
                     x4 := -Sqrt(y2);
                     //edt5.Text := FloatToStr(x2);
                     //edt7.Text := FloatToStr(x4);
                    end
                   else
                  if (y1>0) and (y2>0) then
                  begin
                         lbl1.Caption := 'Четыре корня';
                        x1 := Sqrt(y1);
                        x2 := Sqrt(y2);
                        x3 := -Sqrt(y1);
                        x4 := -Sqrt(y2);
                        //Edt4.Text := FloatToStr(x1);
                        //edt5.Text := FloatToStr(x2);
                        //Edt6.Text := FloatToStr(x3);
                        //Edt7.Text := FloatToStr(x4);
              end;
       
      end;
      end;
      end.


    Добавлено
    Вот поправленная:
    ExpandedWrap disabled
      procedure TForm1.Button1Click(Sender: TObject);
      var x1, x2, y1, y2, x3, x4, a, b, c, d: Real;
      begin
      // Edt4.Text := '';
      // Edt5.Text := '';
      // Edt6.Text := '';
      // Edt7.Text := '';
        //lbl1.Caption
        a := 1;//StrToFloat(Edt1.Text);
        b := 4;//StrToFloat(Edt2.Text);
        c := -21;//StrToFloat(Edt3.Text);
        d := b * b - 4 * a * c;
        if (a = 0) then
        begin
          if (b = 0) then   lbl1.Caption := 'Нет решений'
          else
          begin
              lbl1.Caption := 'Два корня';
              y1 := -c / b;
      //    end;
              if (y1<0) then      lbl1.Caption := 'Нет решений'
              else
                if (y1>0) then
                begin
                    x1 := Sqrt(y1);
                    x2 :=-Sqrt(y1);
      ///             Edt4.Text := FloatToStr(x1);
      //              Edt5.Text := FloatToStr(x2);
                  end
          end
        end
        else
        begin
         if (d=0) then
         begin
            if (y1<0) then        lbl1.Caption := 'Нет решений'
            else
              if (y1>0) then
              begin
                  y1 := (-b)/(2 * a);
                lbl1.Caption := 'Два корня';
                  x1 := Sqrt(y1);
                x2 := -Sqrt(y1);
                //Edt4.Text := FloatToStr(x1);
      //        Edt6.Text := FloatToStr(x2);
                end;
         end
         else
            if (d < 0) then  lbl1.Caption := 'Дискриминант меньше нуля,нет корней'
            else
              if (d > 0) then
              begin
                  y1 := (-b + Sqrt(d)) / (2 * a);
                  y2 := (-b - Sqrt(d)) / (2 * a);
      //        end
      //        else
                  if (y1<0) and (y2<0) then lbl1.Caption := 'Нет решений'
                  else
                      if (y1>0) and (y2<0) then
                    begin
                         lbl1.Caption := 'Два корня';
                         x1 := Sqrt(y1);
                         x3 := -Sqrt(y1);
                        //Edt4.Text := FloatToStr(x1);
                        //Edt6.Text := FloatToStr(x3);
                  end
                    else
                        if (y1<0) and (y2>0) then
                        begin
                          lbl1.Caption := 'Два корня';
                          x2 := Sqrt(y2);
                          x4 := -Sqrt(y2);
                          //edt5.Text := FloatToStr(x2);
                          //edt7.Text := FloatToStr(x4);
                        end
                        else
                            if (y1>0) and (y2>0) then
                            begin
                              lbl1.Caption := 'Четыре корня';
                              x1 := Sqrt(y1);
                              x2 := Sqrt(y2);
                              x3 := -Sqrt(y1);
                              x4 := -Sqrt(y2);
                              //Edt4.Text := FloatToStr(x1);
                              //edt5.Text := FloatToStr(x2);
                              //Edt6.Text := FloatToStr(x3);
                              //Edt7.Text := FloatToStr(x4);
                        end;
              end;
        end;
      end;
      end.
      ExpandedWrap disabled
         if (d > 0) then
         
              begin
         
              y1 := (-b + Sqrt(d)) / (2 * a);
         
              y2 := (-b - Sqrt(d)) / (2 * a);
         
              end


      Я end поставил в конец всех условий, а begin оставил, в итогевсе работает без ошибок
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0313 ]   [ 16 queries used ]   [ Generated: 3.05.24, 18:14 GMT ]