Probleme de compilation en c

Résolu/Fermé
mriwa - 27 oct. 2010 à 19:36
 mriwa - 27 oct. 2010 à 20:07
Bonjour,


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


merci

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
27 oct. 2010 à 19:42
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
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
Modifié par fiddy le 27/10/2010 à 20:36
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
merci bq :)
0