J'imagine que si la signature est
Complex sqrt(double x);
Alors x représente une valeur réelle. Donc Complex.img pourrait être un 0/1 représentant si x était positif ou négatif.
Exemple (en x comme un nombre réel)
//C like pseudocode
Complex sqrt(double x){
Complex result={0,0};
if (x==0) return result;
if (x<0){
result.img =1;
real = abs(x);
}
result.real= sqrt_(x);//calculates square root of a positive value.
return result;
}
//some other place
double r =-4.0;
Complex root = sqrt(r);
//prints "Square root of -4.0 is 2i"
printf("Square root of %.2f is %.2f%c",r,root.real,(root.img?'i':''));
Qu'est-ce qui ne va pas? Il renvoie une structure 'Complex' par valeur. Le premier fragment de code utilise Complex soit pour le nom de structure et la définition de variable: il ne peut pas fonctionner. – ntd
Vous manquez un 'typedef', par hasard? – pmg
Rappelez-vous que les structures et les typedefs ont des espaces de noms * séparés * en C.Ainsi, 'Complex' et 'Complex Complex' sont des types valides avec la définition ci-dessus. Aussi, l'obligatoire: http://en.wikipedia.org/wiki/Complex_number. –