Le problèmefonction racines équation du second degré
Ecrire une fonction qui calcule les racines réelles et imaginaires de l'équation quadratique
ax^2 +bx+c = 0
Vous devez gérer les trois types de racines.
Astuce: utiliser ce prototype de fonction:
int calculateRoots(int a,int b,int c,float* root1,float* root2);
Mes questions:
- comment une fonction de résolution des équations du second degré retourne un int? Je suis paumé sur ce que cela signifie
- J'ai changé le type de retour de auj à
void()
mais je ne pouvais pas gérer les 2 racines imaginaires ne sais pas comment retourner réel + imag i
Voici ce que je suis arrivé si loin:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void calculateRoots(int a,int b,int c,float* root1,float* root2);
int main()
{
float r1,r2;
int a,b,c;
printf("enter the coefficients :\n");
scanf("%d%d%d",&a,&b,&c);
void calculateRoots(a,b,c,&r1,&r2);
printf("%d and %d are roots,r1,r2);
return 0;
}
void calculateRoots(int a,int b,int c,float* root1,float* root2)
{ float x=b*b-4*a*c;
if(x==0)
{
*root1=(-1*b)/(2*a);
*root2=(-1*b)/(2*a);
}
else if(x>0)
{
*root1=(-1*b+x)/(2*a) ;
*root2=(-1*b-x)/(2*a) ;
}
if(x<0)
{
root1=// Any help here
}
}
Cela semble être quelque chose que vous devriez demander à votre instructeur. Avez-vous reçu des intrants/extrants pour chaque cas? – Kevin
Vous n'êtes probablement pas invité à gérer des racines imaginaires. Vous avez probablement besoin de gérer les 3 cas, exactement une racine, deux racines, pas de racines du tout. Si 'x <0' renvoie 0 sinon renvoie 1. De cette façon, l'appelant peut savoir qu'il n'y a pas de racines si la fonction retourne 0. –
' float * root1' peut pointer vers un tableau *** de flottants. Donc la fonction s'appelle comme ceci: 'float r1 [2], r2 [2]; calculateRoots (a, b, c, r1, r2); 'La valeur de retour est 1 ou 2, c'est-à-dire le nombre de racines. – user3386109