Probleme de compilation en c

Résolu
Bonjour,

pouvez vous m'aider a savoir le sens de cette erreur "error: subscripted value is neither array nor pointer"??

merci

4 réponses

  1. Contributeur
    Bonjour,
    Ceci veut dire "erreur: la valeur souscrite n'est ni un tableau ni un pointeur".
    Probablement une erreur de type en passage d'argument à une fonction.
    Cdlt,
    1. merci mais comment on peut la corriger??
      voiçi mon programme:
      #include <stdio.h>
      #include <stdlib.h>
      struct critere
      {
      float prix;
      float robustesse;
      float confort;
      };
      struct voiture
      {
      char marque[30];
      char modele[30];
      struct critere point;
      };

      void saisie_voiture(struct voiture a )
      {
      printf("donner la marque de la voiture\n");
      scanf("%s",a.marque);
      printf("donner le modele de la voiture\n");
      scanf("%s",a.modele);
      printf("donner le prix de la voiture\n");
      scanf("%d",&a.point.prix);
      printf("donner la robustesse de la voiture\n");
      scanf("%d",&a.point.robustesse);
      printf("donner le confort de la voiture\n");
      scanf("%d",&a.point.confort);
      return 0;
      }

      void remplissage(struct voiture t,int k)
      {
      int i;
      for (i=0;i<=(k-1);i++)
      {
      saisie_voiture(t[i]);
      }
      return 0;
      }

      float moyenne_point(struct voiture t,int j)
      {
      float x,y,z,moy;
      x=t[j].point.prix;
      y=t[j].point.robustesse;
      z=t[j].point.confort;
      moy=(x+y+z)/3;
      return moy;
      }

      float moyenne(int i,int k,struct voiture t)
      {
      float moy1[100];
      float m;
      float moyennefinale;
      int j;
      m=0;
      for (i=0;i<=(k-1);i++)
      {
      moy1[j]=moyenne_point(t,i);
      m=m+moy1[i];
      }
      moyennefinale=m/3;
      return moyennefinale;
      }

      int main()
      {

      struct voiture voit;
      struct critere crit;
      int i,n;
      struct voiture tab[100];
      float moypoint,moytot;

      printf("donner le nombre de voiture n");
      scanf("%d",&n);
      remplissage(tab,n);
      for (i=0;i<=(n-1);i++)
      {
      moypoint=moyenne_point(tab,i);
      moytot=moyenne(i,n,tab);
      if (moypoint>moytot)
      {
      printf("la qualification da la voiture %d ent bonne\n",i);
      }
      }
      return 0;
      }
      1. Contributeur
        J'ai pas tout regardé mais :
        Tu appelles la fonction ainsi remplissage(tab,n); où tab est un tableau

        Pourtant ta fonction est déclarée ainsi : void remplissage(struct voiture t,int k)
        On voit bien que le premier argument n'est pas un tableau ni un pointeur.
        Il faudrait donc déclararer la fonction remplissage en : void remplissage(struct voiture *t,int k)

        Et n'oublie pas de corriger les erreurs similaires.
        S'il reste des erreurs, reposte ton code avec tes corrections et utilise les balises <codes> (à droite du bouton souligné) car sinon c'est illisible.