Probleme de pointeur (enfin je pense) dans l'utilisation d'une fonction

Signaler
Messages postés
10
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
4 mai 2005
-
Messages postés
65
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
5 novembre 2010
-
Salut…. Help


Je souhaite créer un main et une fonction. Tout cela me servira ensuite en info industriel pour un microcontroleur.


Le main s’occupera de recuperer (dans la RAM du µC) les valeurs d’entrée de la fonction puis de renvoyer les sortie dans la RAM. La fonction a juste pour but de faire différents calculs (multiplication, cos, sin…).


Au début, je ne mettais aucune etoile (pour les pointeurs) puis lors du build, ca me mettait plein d’erreurs ; alors j’ai mis des étoiles un peu partout. Mais il me reste une erreur. euh.... meme si je n'ai plus qu'une erreur, peut être que c'est quand même faux !!!!





MAIN




void CALCUL(int* V, int* I, int* dt, int* Si, float* Pi);

void main (void)

{

//creation de tableaux simulant les apports de valeurs provenant de la RAM

int V[4],I[4],dt[4];

V[0]=220;

V[1]=230;

V[2]=235;

V[3]=227;

V[4]=231;

I[0]=2;

I[1]=4;

I[2]=2;

I[3]=2;

I[4]=2.1;

dt[0]=2;

dt[1]=2.1;

dt[2]=2.2;

dt[3]=1.2;

dt[4]=2.3;

//compteur permettant la simulation des arrivées des nouvelles mesures

int i=0;

//Utilisation de la fonction dans une boucle infinie (tache de fond)

int t=1;

while (t=0)

{

V=V[i];

I=I[i];

dt=dt[i];

i++;

CALCUL(&V, &I, &dt, &Si, &Pi);

printf("valeur de V : %f",V);

printf("valeur de I : %f",I);

printf("valeur de dt : %f",dt);

printf("valeur de Si : %f",Si);

printf("valeur de PSi : %f",Pi);

//ici se placera le rangement de valeur de sortie dans la RAM

//arret de la boucle while pour arreter le programme de test

if (i=4)

{

t=0;

}

}

system (" pause " )

}

La fonction


<CENTER>

void CALCUL(int* V, int* I, int* dt, int* Si, float* Pi)
{

float phi ;

phi=*dt*M_PI*0.1 ;

Si=*V * *I ;

Pi=Si*cos(phi) ;

}

</CENTER>

Merci

2 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Tes tableaux V, I, dt ne sont pas assez grands, leur dimentions doit être au moins 5



while(t=0) -> Tu voulais sans doute écrire while(!t), pareil pour if(i=4) -> if(i==4)



Dans CALCUL, V est en fait un tableau, dont *V signifie V[0], je ne sais pas si c'est vraiment ce que tu veux faire...



V=V[i];

I=I[i];

dt=dt[i];Ces trois lignes n'ont aucun sens, tu ne peux pas affecter un tableau



Même si ton programme compilait bien il ne marcherait sans doute pas.
Je pense que tu drvrais changer de méthode de programmation car celle
qui consisite a mettre des étoiles un peu partout n'est pas bonne
Messages postés
65
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
5 novembre 2010

Salut,
Je crois que tu as besoin de vérifier tes connaissances sur les pointeurs, les tableaux etc....
C'est pas trés compliqué et si tu t'y penche un peu, tu comprendra ce que tu fais, ça t'évitera de mettre 'des étoiles partout' au p'tit bonheur la chance
La prog demande d'être un minimum rigoureux sinon, dans le meilleur cas, ça compile mais ça ne fonctionne pas...
++

G0ss3Yn... ( Bon coding a tous !)