Manipulation des nombres complexes en C
Résolu/Fermé
A voir également:
- Nombre complexe en c
- En raison d'un nombre important d'échec de connexion snapchat - Forum Snapchat
- Snapchat locked : mon compte snapchat est bloqué ✓ - Forum Snapchat
- Nombre facile - Télécharger - Outils professionnels
- Le nombre de tentatives de déverrouillage incorrectes est trop élevé samsung ✓ - Forum Samsung
- Supprimer espace nombre excel ✓ - Forum Excel
4 réponses
Mr. D@RK
Messages postés
26
Date d'inscription
lundi 19 juillet 2010
Statut
Membre
Dernière intervention
16 octobre 2010
28
10 oct. 2010 à 15:41
10 oct. 2010 à 15:41
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
double Re;
double Im;
} Complexe;
void lectureC(Complexe* z)
{
scanf ("%lf", &z->Re);
scanf ("%lf", &z->Im);
}
void EcritureC(Complexe z)
{
printf ("%lf + i %lf\n", z.Re, z.Im);
}
Complexe* sommeC(Complexe z1, Complexe z2)
{
Complexe* r=(Complexe*)malloc(sizeof(Complexe));
r->Re= z1.Re+ z2.Re;
r->Im= z1.Im+ z2.Im;
return r;
}
Complexe* produitC(Complexe z1, Complexe z2)
{
Complexe* r=(Complexe*)malloc(sizeof(Complexe));
r->Re= z1.Re * z2.Re - z1.Im * z2.Im;
r->Im= z1.Re * z2.Im+ z2.Re * z1.Im;
return r;
}
Complexe* divisionC(Complexe z1, Complexe z2)
{
Complexe* tmp=(Complexe*)malloc(sizeof(Complexe));
Complexe* r=NULL;
double m= z2.Im*z2.Im+z2.Re*z2.Re;
tmp->Re= z2.Re/m;
tmp->Im= -z2.Im/m;
r= produitC(z1,*tmp);
free(tmp);
return r;
}
main ()
{
Complexe z1,z2;
Complexe *z3=NULL;
printf ("entrez un nombre réel de z1 et un nomre imaginaire z1: \n");
lectureC (&z1);
printf ("entrez un reel de z2 et un imaginaire z2: \n");
lectureC (&z2);
z3 = sommeC(z1,z2);
printf ("la partie reel de z3 est : %f\n", z3->Re );
printf ("la partie imaginaire de z3 est : %f \n", z3->Im);
//somme
printf("\nz1+z2=");
EcritureC(*z3);
free(z3);
//produit
printf("\nz1*z2=");
z3=produitC(z1,z2);
EcritureC(*z3);
free(z3);
//division
printf("\nz1/z2=");
z3=divisionC(z1,z2);
EcritureC(*z3);
free(z3);
//
system("pause");
return 0;
}
#include <stdlib.h>
typedef struct
{
double Re;
double Im;
} Complexe;
void lectureC(Complexe* z)
{
scanf ("%lf", &z->Re);
scanf ("%lf", &z->Im);
}
void EcritureC(Complexe z)
{
printf ("%lf + i %lf\n", z.Re, z.Im);
}
Complexe* sommeC(Complexe z1, Complexe z2)
{
Complexe* r=(Complexe*)malloc(sizeof(Complexe));
r->Re= z1.Re+ z2.Re;
r->Im= z1.Im+ z2.Im;
return r;
}
Complexe* produitC(Complexe z1, Complexe z2)
{
Complexe* r=(Complexe*)malloc(sizeof(Complexe));
r->Re= z1.Re * z2.Re - z1.Im * z2.Im;
r->Im= z1.Re * z2.Im+ z2.Re * z1.Im;
return r;
}
Complexe* divisionC(Complexe z1, Complexe z2)
{
Complexe* tmp=(Complexe*)malloc(sizeof(Complexe));
Complexe* r=NULL;
double m= z2.Im*z2.Im+z2.Re*z2.Re;
tmp->Re= z2.Re/m;
tmp->Im= -z2.Im/m;
r= produitC(z1,*tmp);
free(tmp);
return r;
}
main ()
{
Complexe z1,z2;
Complexe *z3=NULL;
printf ("entrez un nombre réel de z1 et un nomre imaginaire z1: \n");
lectureC (&z1);
printf ("entrez un reel de z2 et un imaginaire z2: \n");
lectureC (&z2);
z3 = sommeC(z1,z2);
printf ("la partie reel de z3 est : %f\n", z3->Re );
printf ("la partie imaginaire de z3 est : %f \n", z3->Im);
//somme
printf("\nz1+z2=");
EcritureC(*z3);
free(z3);
//produit
printf("\nz1*z2=");
z3=produitC(z1,z2);
EcritureC(*z3);
free(z3);
//division
printf("\nz1/z2=");
z3=divisionC(z1,z2);
EcritureC(*z3);
free(z3);
//
system("pause");
return 0;
}
10 oct. 2010 à 15:41
10 oct. 2010 à 16:00
Pour les printf, il s'agit de printf("%f",...) et non de %lf.
De plus, vous cassez un peu tout son programme en passant par des allocations dynamiques...