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

cs_neutrix Messages postés 10 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 4 mai 2005 - 4 mai 2005 à 10:58
G0ss3Yn Messages postés 65 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 5 novembre 2010 - 4 mai 2005 à 17:29
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
A voir également:

2 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 mai 2005 à 11:23
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
0
G0ss3Yn Messages postés 65 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 5 novembre 2010
4 mai 2005 à 17:29
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 !)
0
Rejoignez-nous