Bonjour, je ne suis pas un accro au c mais je vais tenter d’expliquer mon problème.
Je dois créer un programme qui permet de manipuler à loisir des nombres complexes(phase, module, changement de forme …).
Dans 2 tableaux sont stockés partie réelle et partie imaginaire :
J’ai donc créé 2 fonctions une algebrique et une trigo.
Void algebrique :
Appel de fonction :
saisien (on demande à l’utilisateur le nbre de nbres complexes qu’il veut entrer)
saisiealgebrique() (on demande la partie réelle et imaginaire)
affichealgebrique() ( on affiche les nombres)
A l’affichage on a ça : On observe que chaque nombre est associé à un caractere ascii A,B,C…
Jusque là pas de problème mais après j’essaye de rajouter des nombres et le programme s’arrete après la ligne 70.
En résumer j'ai des problèmes pour modifier des nombres et rajouter des nombres.
Voila une image de la console :
[img]http://yfrog.com/evconsolenbrecomplexesj[/img]
Merci d'avance
Ci dessous le code
#include <stdio.h>
#include <stdlib.h>
float reel[100];
float imaginaire[100];
float module[100];
float phase[100];
float sommereel[100];
float sommeimaginaire[100];
int main()
{
int choix;
void algebrique ();
void trigonometrique();
do
{
printf("\n Pour taper");
printf("\n\t sous forme algebrique ----> tapez 1\t");
printf("\n\t sous forme trigonometrique ----> tapez 2\t");
scanf("%d",&choix);
}
while(choix<1||choix>2);
switch(choix)
{
case 1:
printf("\n\t Donc sous forme algebrique");
algebrique();
break;
case 2:
printf("\n\t Donc sous forme trigonometrique");
trigonometrique();
break;
default:
break;
}
return 0;
}
void algebrique ()
{
int na,nmodif;
int najoute=0;
int i;
int nombreachanger;
int choix_rajoute;
int choix_modif;
int choix_autreforme;
int saisien();
void saisiealgebrique(float *reel,float *imaginaire, int i1,int i2);
void affichealgebrique(float *reel,float *imaginaire, int i1,int i2);
void addition( float *reel,float *imaginaire, float *sreel,float *simaginaire,int nb);
/*------------------------ SAISIE DE NOMBRES ALGEBRIQUES-----------------------------------------------------*/
na=saisien(); /* na = nbre de complexes saisis*/
saisiealgebrique(&reel[0],&imaginaire[0],0,na);
affichealgebrique(&reel[0],&imaginaire[0],0,na);
/*----------------------- RAJOUTER DES NOMBRES----------------------------------*/
do
{
printf("\n\nVoulez-vous rajouter des nbres ss forme algebrique ---> tapez 1");
printf("Sinon tapez 2");
scanf("%d",&choix_rajoute);
}
while(choix_rajoute<1||choix_rajoute>2);
if(choix_rajoute==1)
{
najoute=saisien(); /* najoute = nbre de complexes ajoutés*/
/*printf("voulez vous rajoutez? ");*/
saisiealgebrique(&reel[0],&imaginaire[0],na,najoute);
affichealgebrique(&reel[0],&imaginaire[0],na,najoute); /* On affiche tout le tableau ceux déjà saisis et ceux que l'on vient de saisir*/
}
/* --------------------- MODIFIER UN NOMBRE ------------------------------------------------------ */
do
{
printf("\n\nVoulez-vous modifier des nombres ---> tapez 3");
printf("Sinon tapez 4");
scanf("%d",&choix_modif);
}
while(choix_modif<3||choix_modif>4);
if(choix_modif==3)
{
printf("Quel nombre voulez-vous changer ?");
scanf("%d",&nombreachanger);
saisiealgebrique(&reel[nombreachanger],&imaginaire[nombreachanger],1);
affichealgebrique(&reel[0],&imaginaire[0],na+najoute);
}
return ;
}
int saisien (void)
{
int n;
do
{
printf ("\n Combien de nombres complexes");
scanf("%d",&n);
}
while(n<1 || n>100);
return n;
}
void saisiealgebrique(float *reel,float *imaginaire, int i1,int i2)
{
char nombre;
int i;
for(i=i1;i<i2;i++)
{
printf(" i vaut %d",i);
nombre=65+i;
do
{
printf("\n nombre %c : \n",nombre);
printf("\n\t saisir la partie reelle ");
scanf("%f",reel+i);
printf("\n\t saisir la partie imaginaire ");
scanf("%f",imaginaire+i);
}
while(*(reel)<-100 || *(reel)>100 ||*(imaginaire)<-100 || *(imaginaire)>100);
}
return ;
}
void affichealgebrique(float *reel,float *imaginaire, int i1,int i2)
{
int i;
for (i=i1;i<i2 ;i++)
{
printf("\n\n nombre %c : %f + %f i",65+i,*(reel+i),*(imaginaire+i));
}
return ;
}