Probleme de compilation en c

Résolu
mriwa -  
 mriwa -
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. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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,
    0
  2. mriwa
     
    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;
    }
    0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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.
    0