Nombres complexes
SPA Genius
Messages postés
2
Statut
Membre
-
SPA Genius Messages postés 2 Statut Membre -
SPA Genius Messages postés 2 Statut Membre -
Salut a tous,
Je suis un debutant en programmation en C. Je dois ecrire un programme permettant de:
1. Saisir deux nombres complexes C1 et C2
2. d'afficher chacun d'eux
3. d'additionner les deux nombres complexes et de mettre le résultat dans le premier.
4. D'afficher à nouveau les deux
5. De calculer et d'afficher leur norme.
J'ai commence, je trouve des difficultes pour des nombres complexes C1 et C2. Voici mes codes:
#include<stdio.h>
#include<stdlib.h>
main()
{
double Re;
double Im;
double C1;
double C2;
int i;
printf("Saisir la partie reelle de C1: ");
scanf("%f", &Re);
printf("Saisir la partie imagimaire de C1: ");
scanf("%f", &Im);
C1 = Re + i*Im;
printf("Le premier nombre complexe est: ");
system ("pause");
printf("Saisir la partie reelle de C2: ");
scanf("%f", &Re);
printf("Saisir la partie imaginaire de C2: ");
scanf("%f", &Im);
C2 = Re + i*Im;
printf("Le deuxieme nombre complexe est: ");
}
Je suis un debutant en programmation en C. Je dois ecrire un programme permettant de:
1. Saisir deux nombres complexes C1 et C2
2. d'afficher chacun d'eux
3. d'additionner les deux nombres complexes et de mettre le résultat dans le premier.
4. D'afficher à nouveau les deux
5. De calculer et d'afficher leur norme.
J'ai commence, je trouve des difficultes pour des nombres complexes C1 et C2. Voici mes codes:
#include<stdio.h>
#include<stdlib.h>
main()
{
double Re;
double Im;
double C1;
double C2;
int i;
printf("Saisir la partie reelle de C1: ");
scanf("%f", &Re);
printf("Saisir la partie imagimaire de C1: ");
scanf("%f", &Im);
C1 = Re + i*Im;
printf("Le premier nombre complexe est: ");
system ("pause");
printf("Saisir la partie reelle de C2: ");
scanf("%f", &Re);
printf("Saisir la partie imaginaire de C2: ");
scanf("%f", &Im);
C2 = Re + i*Im;
printf("Le deuxieme nombre complexe est: ");
}
1 réponse
-
Bonjour,
scanf("%f", &Re);
Re est de type double. Il faut donc mettre : scanf("%lf",&Re);
De même pour les autres variables.
C1 = Re + i*Im;
Que vaut i ? Tu ne peux pas faire comme ça.
Je suppose que tu ne peux pas utiliser le type Complex, donc tu dois créer une structure
Ainsi lorsque tu définis un complexe, tu initialises une variable de type structure.
struct ... {
double re;
double im;
}
Et pour l'addition, il suffit d'additionner les parties réelles, et complexes. Etc. Après c'est des maths.
main()
Le bon prototype est : int main(void)
Et enfin, la fonction main() retourne 0 pour dire que tout s'est bien passé. Donc, il faut rajouter : return 0; en fin de fonction.
Cdlt,
Google is your friend-
tu as plus un problème de math que de programmation:
et en programmation i est une lettre par un complexe.
Soit C1 et C2 deux complexes, alors il existe RE1, RE2, Img1 et Img2 4 réel tel que:
C1 = RE1 + i Img1
C2 = RE2 + i Img2
alors C1 + C2 = (RE1 + RE2) + i (Img1 + Img2)
et la norme de C1 = sqrt(RE1² + Img1²) -
-
Merci beaucoup. Avant meme de lire vos suggestions, j'ai essaye une autre facon et ca a marche. Si vous voulez voir mes codes, les voici. Et si vous voyez qu'il ya des choses a corriger, faites moi savoir. Merci
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
// Declaration de variables
float ReC1, ReC2;
float ImC1, ImC2;
float Reelle, Imaginaire;
float NC1, NC2;
printf("\t\t\t\t BONJOUR \t\t\t\n\n");
printf("BIENVENUE SUR LE PROGRAMME VOUS PERMETTANT D'EFFECTUER DES OPERATIONS SUR LES\n NOMBRES COMPLEXES\n\n");
printf("-----------------------------------------------------------------------------");
/*Saisie du premier nombre complexe*/
printf("\n Saisir la partie reelle du premier nombre complexe: ");
scanf("%f", &ReC1);
printf("\n Saisir la partie imaginaire du premier nombre complexe: ");
scanf("%f", &ImC1);
//Saisie du second nombre complexe
printf("\n Saisir la partie reelle du second nombre complexe: ");
scanf("%f", &ReC2);
printf("\n Saisir la parite imaginaire du second nombre complexe: ");
scanf("%f", &ImC2);
//Addition des nombres complexes
Reelle = ReC1 + ReC2;
Imaginaire = ImC1 + ImC2;
//Norme des nombres complexes
NC1 = sqrt(ReC1 * ReC1 + ImC1 * ImC1);
NC2 = sqrt(ReC2 * ReC2 + ImC2 * ImC2);
//Affichage des nombres complexe
printf("\n\n Le premier nombre complexe est %f + i%f", ReC1, ImC1);
printf("\n\n Le second nombre complexe est %f + i%f", ReC2, ImC2);
printf("\n\n La somme des deux nombres complexes est: %f + i%f", Reelle, Imaginaire);
//Affichage de nouveau des nombres complexes en mettant le resultat de l'addition dans le premier
printf("\n\n Le premier nombre complexe est %f + i%f", Reelle, Imaginaire);
printf("\n\n Le second nombre complexe est %f + i%f", ReC2, ImC2);
//Affichage de leur norme
printf("\n\n La norme du premier nombre complexe est %f", NC1);
printf("\n\n La norme du second nombre complexe est %f", NC2);
printf("\n\n------------------------------------------------------------------------");
printf("\t\t\t\t\t\n\n MERCI D'AVOIR UTILISE CE PROGRAMME \n\n");
printf("\t AU REVOIR\n\n");
} -
Ben la plupart de mes remarques restent d'actualité (struct, ça serait plus propre pour regrouper en un type les parties réelles et imaginaires, main). C'est dommage d'avoir mis les type en float et pas en double. Surtout que tu utilises la fonction sqrt qui convertit en double. Si tu ne veux pas utiliser double mais float, alors il vaut mieux utiliser sqrtf(...) plutôt que sqrt(...)
-
-