Partage
  • Partager sur Facebook
  • Partager sur Twitter

error: expected primary-expression before ']'token

niveau débutant, tableau et fonctions.

Sujet résolu
19 mai 2012 à 23:59:37

Bonjour,

J'aborde actuellement le chapitre sur les tableaux en c++. J'ai tenté de faire l'exercice proposé par mateo21, qui ne m'a pas semblé difficile mais voilà, apparemment j'ai fais une faute de syntaxe, et code::block a beau me mettre le nez dessus, je suis incapable de la corriger :euh: .
Voici le message d'erreur de code::block :
error: expected primary-expression before ']'token
cette erreur est localisé à la ligne 27.

#include <iostream>
using namespace std;

double calculMoyenne(double tableau[], int const tailleTableau)
{
    double moyenne(0);
    for (int i(0); i<tailleTableau; ++i)
    {
        moyenne += tableau[i];
    }
    moyenne /= tailleTableau;
    return moyenne;
}

int main()
{
   int const nombreNotes(6);
   double notes[nombreNotes];

   notes[0] = 12.5;
   notes[1] = 19.5;  
   notes[2] = 6;    
   notes[3] = 12;
   notes[4] = 14.5;
   notes[5] = 15;
   double moyenne(0);
   moyenne = calculMoyenne(notes[], nombreNotes); // Oh la jolie faute de syntaxe!
   cout << "Votre moyenne est : " << moyenne << endl;

   return 0;
}


Je me doute que mon erreur est vraiment simple, mais je ne vois vraiment pas ...
Merci d'avance!
  • Partager sur Facebook
  • Partager sur Twitter
20 mai 2012 à 0:19:44

Pour faire simple, "notes[]" (ligne 27) ça ne veut rien dire. :p

"notes" est une variable, un tableau de 6 doubles dans le cas présent. Et la variable "notes[4]" (ou "notes[0]", "notes[1]", etc.) représente le 5e élément du tableau (14.5 ici).
Mais juste "notes[]", ça ne représente rien du tout dans ce contexte. On l'utilise dans le prototype de la fonction calculMoyenne ici afin d'indiquer que cette fonction doit prendre comme paramètre un tableau, mais c'est tout. C'est pour ça que le compilateur te crie dessus : si tu as ouvert les crochets, il s'attend a recevoir une position d'élément dans le tableau, et non pas à ce que tu les refermes directement. :)

D'où le "error: expected primary-expression before ']'token", soit "erreur: j'attendais quelque chose avant le ']'" (traduction à la truelle :magicien: ).


Dans le cas présent, tu as une fonction, "calculMoyenne", qui prend deux paramètres : un tableau de doubles, et un entier représentant la taille du dit tableau.
Il faut donc l’appeler de cette façon : "moyenne = calculMoyenne(notes, nombreNotes);", où "notes" représente bien un tableau de doubles. ;)
  • Partager sur Facebook
  • Partager sur Twitter
Qui mange un œuf mange un bœuf.
20 mai 2012 à 0:24:14

Merci beaucoup pour cette explication claire, rapide et précise :) !
Sujet résolu!
  • Partager sur Facebook
  • Partager sur Twitter
13 juillet 2019 à 18:28:37

salut; 

qui peut m'aide s'il vous plait ????

  • Partager sur Facebook
  • Partager sur Twitter
13 juillet 2019 à 19:33:11

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter