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

pika86 -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    1. ljm972 Messages postés 255 Date d'inscription   Statut Membre Dernière intervention   29
       
      Bonjour,
      Peut-être qu'il voulait faire :
      Y=vect(Y,0,x);
      Dans ce cas il perdrait la valeur initiale
      0
  2. ljm972 Messages postés 255 Date d'inscription   Statut Membre Dernière intervention   29
     
    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
  3. kratosmindfreak Messages postés 45 Statut Membre
     
    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
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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