excuses pour le mur de texte.numéros de sortie du programme équation quadratique
m'a donné la tâche suivante du livre, je travaille à partir de:
"équations du second degré sont de la forme: ax^2 + bx + c = 0
Pour résoudre ces , on utilise la formule quadratique: (-b ± √ (b^2-4ac))/2a
il y a un problème, cependant: si b^2-4ac est inférieur à zéro, il échouera Écrire un programme qui peut calculer x pour un équat quadratique ion. Créer une fonction qui imprime les racines de l'équation quadratique donné a, b, c. Lorsque le programme détecte une équation sans racine réelle, faites-lui imprimer un message. Comment savez-vous que vos résultats sont plausibles? Pouvez-vous vérifier qu'ils sont corrects? "
J'ai écrit mon programme, mais, toutes les sorties que je reçois sont des nombres bizarres Par exemple:... 7.08141e + 268 est d'utiliser 4 de sorte que le sqrt devrait être 2 Je crois
EDIT. : J'ai modifié le code et recevoir les valeurs correctes pour le sqrt de a, b, c maintenant, mais, x1 et x2 donnent nan qui est juste faux.Espérons que ce code est un peu plus propre et une meilleure mise en page
double quad_x1(double b, double a, double c) {
double x1 = (-b + sqrt(b * b - 4 * a * c))/(2 *a);
return x1;
}
double quad_x2(double b, double a, double c) {
double x2 = (-b - sqrt(b * b - 4 * a * c))/(2 * a);
return x2;
}
double square_root_a(double a) {
double sq_a=sqrt(a);
if(sq_a<0){
throw invalid_argument("Input is less than zero.");
}
else {
return sq_a;
}
}
double square_root_b(double b) {
double sq_b=sqrt(b);
if(sq_b<0) {
throw invalid_argument("Input is less than zero.");
}
else {
return sq_b;
}
}
double square_root_c(double c) {
double sq_c=sqrt(c);
if(sq_c<0) {
throw invalid_argument("Input is less than zero.");
}
else {
return sq_c;
}
}
int main()
{
try{
double a=4;
double b=4;
double c=4;
double sq_a = square_root_a(a);
double sq_b = square_root_b(b);
double sq_c = square_root_c(c);
double x1 = quad_x1(b, a, c);
double x2 = quad_x2(b, a, c);
cout<<"The square roots are: a = "<<sq_a<<" b = "<<sq_b<<" c = "<<sq_c<<'\n';
cout<<"The answer to the quadratic is:\n";
cout<<"x1 = "<<x1<<'\n';
cout<<"x2 = "<<x2<<'\n';
}
catch (invalid_argument) {
cerr<<"Invalid Input - Less than zero"<<'\n';
return 1;
}
return 0;
}
Ajouter la sortie à votre question – Gabriel
Vous devez affecter les résultats de vos appels de fonction aux vars: 'sq_a = racine_carrée (a, b, c);' –
Un bon nombre de problèmes dans votre code, mais le principal est que sq_a, sq_b et sq_c ne sont jamais définis sur rien, d'où les valeurs non définies invalides qui sont en cours d'impression. – davestevens