Top.Mail.Ru
Ответы

Уточнаяющий вопрос по С++ решение математических задач

Написал код для программы в С++ по заданию но не уверен в праильности возможно вы подскажите.

Задание звучит так:

Даны действительные числа a, b, c (a ≠ 0). Полностью
исследовать биквадратное уравнение ax4 + bx2 + c = 0, т. е. если
действительных корней нет, то должно быть выдано сообщение об
этом, иначе должны быть выданы два или четыре корня

123456789101112131415161718192021222324252627282930313233343536
 #include <iostream> 
#include <math.h> 
using namespace std; 
  
int main() { 
    double a, b, c, x1, x2, x3, x4, t1, t2, d, D; bool log=false; 
    cin>>a; 
    cin>>b; 
    cin>>c; 
    D = (b * b - 4 * a * c); { 
       
      if (D<0) { 
          cout<<"Нет решений"; 
           
      } 
      else  
      { 
        d=sqrt(D); 
        t1=( - b + d )/2.0 / a; 
        t2=( - b - d )/2.0 / a;  
        if (t1>0) 
        { 
          x1=sqrt(t1); 
          x2=-sqrt(t1); 
          cout<<"X1="<<x1<<"; X2="<<x2<<"; "; 
          log = true; 
        } 
        if (t2>0){ 
          x3=sqrt(t2); 
          x4=-sqrt(t2); 
          if (log == true){cout<<"X3="<<x3<<"; X4="<<x4<<";";} 
          else (log == false);{cout<<"X1="<<x3<<"; X2="<<x4<<";";} 
        } 
      } 
    } 
} 
По дате
По Рейтингу
Аватар пользователя
Новичок

1. Не обрабатывается случай, когда и t1, и t2 одновременно меньше 0: это ведь тоже "Нет решений".

2. Не обрабатывается случай, когда D = 0: в этом случае либо нет корней, либо 2 корня. А у тебя вместо двух выведет четыре корня.

Аватар пользователя
Высший разум

и это ;
else (log == false);{cout<<"X1="<<x3<<"; X2="<<x4<<";";}
даст эффект такой:
else (log == false); // тупо ничего
cout<<"X1="<<x3<<";
X2="<<x4<<";";

Аватар пользователя
Знаток

Так скомпилируй...