Bonjour à tous, je viens vers vous car à la compilation de mon programme, l’erreur
Code:c:55:118: erreur: subscripted value is neither array nor pointer nor vector pt.rouge = round((p[0].rouge + p[1].rouge + p[2].rouge + p[3].rouge + p[4].rouge + p[5].rouge + p[6].rouge + pt[7].rouge + p[8].rouge)*1.0 / i); ^
Voici la fonction qui pose problème
Pour info "couleur" correspond à trois entiers correspondant au rouge, vert et bleu.Code:image fonction(image im_ori, image im_flo, int nb_flou) { int x, y, f, v, w, i; couleur pt, point1; couleur p[8]={0}; if (nb_flou > 0) { for (f=1; f<= nb_flou; f++) { // Les boucles for servent à balayer l'image d'origine par ligne (tous les x d'un seul y) (chaque ligne est balayé de gauche à droite) for (y = 0; y < im_flo.hauteur; y++) { for (x = 0; x < im_flo.largeur; x++) { i=1; for (v=-1; v<2; v++) { for (w=-1; w<2; w++) { if (((x+v)> -1) && ((x+v)<im_flo.largeur) && ((y+w)>-1) && ((y+w)<im_flo.hauteur)) { p[i]=lire_couleur(im_ori,x+v,y+w); i=i+1; } } } pt.vert = round((p[0].vert + p[1].vert + p[2].vert + p[3].vert + p[4].vert + p[5].vert + p[6].vert + p[7].vert + p[8].vert )*1.0 / i); pt.bleu = round((p[0].bleu + p[1].bleu + p[2].bleu + p[3].bleu + p[4].bleu + p[5].bleu + p[6].bleu + p[7].bleu + p[8].bleu )*1.0 / i); pt.rouge = round((p[0].rouge + p[1].rouge + p[2].rouge + p[3].rouge + p[4].rouge + p[5].rouge + p[6].rouge + pt[7].rouge + p[8].rouge)*1.0 / i); // ecriture du point de l'image floue change_couleur(im_flo, x, y, pt); } } // La boucle des opérations de flou va recommencer, pour que le points qui vient d'être calculé soient utilisé pour la nouvelle lecture et le calcul, il faut qu'il corresponde au point de l'image lu (im_ori) im_ori=im_flo; } } else { printf("Erreur : Le nombre d'opérations de flou doit être strictement positif\n"); } return im_flo; }
Visiblement la ligne en gras poserai problème, sauf que je ne comprends pas car mon tableau correspond à des "couleurs" et cela est reçu par quelque chose déclaré comme étant un composant "couleur"...
Là je ne comprends pas comment corriger l'erreur donc si quelqu'un a une idée j'ai les yeux grand ouvert!
Merci d'avance
-----