Comment accéder à un élement d'un tableau

Fermé
pika86 - 20 janv. 2013 à 21:25
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 janv. 2013 à 21:16
Bonjour,
dans mon programme,j'ai déclaré une matrice sous forme de vecteur,et jai fais une fonction qui calcule un certain vecteur .mai après j'appelle la fonction pour calculé le 1 er élèment du vecteur..alors le compilateur m'affiche qu'il y a une incompatibilité de type "*double" et "double"
voila mon code:
double * vect(double *W,int k,double * h)
{

for(i=0;i<n;i++)
{
W[m*i+k]=h[i]/Normx;
}
return W;
}

Y[0]=vect(Y,0,x);


3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
21 janv. 2013 à 19:48
Bonjour,

double * vect(double *W,int k,double * h)
Ta fonction renvoie un vect* et admet en paramètre un double* (pour le 1er argument).
Hors, toi tu mets :
Y[0]=vect(Y,0,x);
Y et Y[0] ne peuvent pas être de même type (double*)...

En regardant ton code, il semblerait que Y soit de type double*. Donc Y[0] est de type double. Tu ne peux donc pas faire Y[0] = vect.

Que veux-tu faire exactement ?
1
ljm972 Messages postés 254 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 6 décembre 2021 29
22 janv. 2013 à 00:07
Bonjour,
Peut-être qu'il voulait faire :
Y=vect(Y,0,x);
Dans ce cas il perdrait la valeur initiale
0
ljm972 Messages postés 254 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 6 décembre 2021 29
20 janv. 2013 à 21:46
Bonjour,
pourrais-tu me dire à quelle ligne se trouve l'erreur, svp.

Y[0]=vect(Y,0,x); ??

vect renvoit un tableau/pointer et non un double,
est-ce que Y[0] est un tableau ?
0
kratosmindfreak Messages postés 43 Date d'inscription mercredi 23 janvier 2013 Statut Membre Dernière intervention 1 février 2013
23 janv. 2013 à 15:26
le probleme c'est le return de la fonction vecteur cette derniere retourne un pointeur de type double or Y[0] c'est une variable de type double donc on peut pas stocker un pointeur dans une variable
pour regler ton probleme
double vect(double *W,int k,double * h){
for(i=0;i<n;i++)
W[m*i+k]=h[i]/Normx;
return *W;
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
23 janv. 2013 à 21:16
Je doute que vect() doit renvoyer un double.
Je vois pas l'intérêt sinon. Autant renvoyer h[0]/Normx...
Un vecteur contient plusieurs éléments. Il faut donc bel et bien renvoyer un double*.
Ce qu'il souhaite faire est plutôt : W = vect(Y, 0, x). Enfin à lui de dire.
0