Format d'entrée
Une ligne contneant quatre nombres réels : a1 b1 a2 b2, représentant respectivement la partie réelle et la partie imaginaire de C1 = a1 + b1i et C2 = a2 + b2i. C2 n'est jamais nul.
Format de sortie
Quatrre lignes, chacune au format : (a1+b1i) opérateur (a2+b2i) = résultat, avec les résultats arrondis à une décimale. Si la partie réelle ou imaginaire du résultat est nulle (proche de 0 à moins de 0,05), elle est omise. Si le résultat est nul, afficher "0.0".
Exemple d'entrée 1
2 3.08 -2.04 5.06
Exemple de sortie 1
(2.0+3.1i) + (-2.0+5.1i) = 8.1i
(2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i
(2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i
(2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i
Exemple d'entrée 2
1 1 -1 -1.01
Exemple de sortei 2
(1.0+1.0i) + (-1.0-1.0i) = 0.0
(1.0+1.0i) - (-1.0-1.0i) = 2.0+2.0i
(1.0+1.0i) * (-1.0-1.0i) = -2.0i
(1.0+1.0i) / (-1.0-1.0i) = -1.0
Code correct (C)
#include <stdio.h>
#include <math.h>
#define EPS 0.1
double real1, imag1, real2, imag2;
double resReal, resImag;
int afficher(double r, double i, int estResultat);
int addition() {
resReal = real1 + real2;
resImag = imag1 + imag2;
printf("(");
afficher(real1, imag1, 0);
printf(") + (");
afficher(real2, imag2, 0);
printf(") = ");
afficher(resReal, resImag, 1);
return 0;
}
int soustraction() {
resReal = real1 - real2;
resImag = imag1 - imag2;
printf("(");
afficher(real1, imag1, 0);
printf(") - (");
afficher(real2, imag2, 0);
printf(") = ");
afficher(resReal, resImag, 1);
return 0;
}
int multiplication() {
resReal = real1 * real2 - imag1 * imag2;
resImag = real1 * imag2 + real2 * imag1;
printf("(");
afficher(real1, imag1, 0);
printf(") * (");
afficher(real2, imag2, 0);
printf(") = ");
afficher(resReal, resImag, 1);
return 0;
}
int division() {
double denom = real2 * real2 + imag2 * imag2;
resReal = (real1 * real2 + imag1 * imag2) / denom;
resImag = (-real1 * imag2 + real2 * imag1) / denom;
printf("(");
afficher(real1, imag1, 0);
printf(") / (");
afficher(real2, imag2, 0);
printf(") = ");
afficher(resReal, resImag, 1);
return 0;
}
int afficher(double r, double i, int estResultat) {
int afficheReel = 0;
if (estResultat && fabs(r) < EPS && fabs(i) < EPS) {
printf("0.0");
return 0;
}
if (estResultat && fabs(r) >= EPS) {
afficheReel = 1;
printf("%.1f", r);
}
if (estResultat && fabs(i) >= EPS) {
if (afficheReel && i > 0)
printf("+%.1fi", i);
else
printf("%.1fi", i);
}
if (!estResultat) {
printf("%.1f", r);
if (i < 0)
printf("%.1fi", i);
else
printf("+%.1fi", i);
}
return 0;
}
int main() {
scanf("%lf %lf %lf %lf", &real1, &imag1, &real2, &imag2);
addition(); printf("\n");
soustraction(); printf("\n");
multiplication(); printf("\n");
division(); printf("\n");
return 0;
}
Note : Les variables ont été renommées pour plus de clarté, la structure logique est identique.