IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Erreur non comprise


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Erreur non comprise
    Bonjour à tous, dans le cadre d'un projet pour l'école je réalise une programme de gestion de cd. Je viens de taper la procédure d'ajout d'un album(ci dessous), est lorsque je veux exécuter le programme il me retourne 3 erreurs que je ne comprend pas: " invalid types `int[int]' for array subscript ". Il me fait ces erreurs pour les lignes devant lesquel g placé d commentaires. Je voudrais savoir si quelqu'un pourrait me renseigner merci d'avance.
    Je tourne sous windows xp
    et j'utilise Dev-C++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    void AjoutAlbum(Album VTabAlb[], int *VNbAlbums, Artiste VTabArt[], int *VNbArtiste, 
         int VTabEnreg[299], int *VNbEnreg)
    {
         //Déclaration des variables
     
         string VNomAlb, VNomArt, VChoix1;
         int VAnnee, VNbChans, Ve, Ve2;
     
         //Début
     
         do
         {
              if(*VNbAlbums < 99)
              {
                  if(*VNbEnreg < 299)
                  {
     
                    cout<<"Nom de l'album à ajouter"<<endl;
                    getline(cin, VNomAlb);
     
                    Ve = RechercheAlb(VTabAlb, *VNbAlbums, VNomAlb);
     
                       if(Ve == -1)
                       {
                             cout<<"Année de sortie"<<endl;
                             cin>>VAnnee;
                             cin.ignore(1,'\n');
                             cout<<"Nombre de chansons"<<endl;
                             cin>>VNbChans;
                             cin.ignore(1,'\n');
     
                             VTabAlb[*VNbAlbums].NomAlb = VNomAlb;
                             VTabAlb[*VNbAlbums].AnneeAlb = VAnnee;
                             VTabAlb[*VNbAlbums].NbChans = VNbChans;
                             *VNbAlbums = *VNbAlbums + 1;
                          // VTabEnreg[1][*VNbEnreg] = *VNbAlbums;
     
                             cout<<"Nom du chanteur"<<endl;
                             getline(cin, VNomArt);
     
                             Ve2 = RechercheArt(VTabArt, *VNbArtiste, VNomArt);
     
                             if(Ve2 == -1)
                             {
                                    VTabArt[*VNbArtiste].NomArt = VNomArt;
                                 // VTabEnreg[0][*VNbEnreg] = *VNbArtiste;
                                    *VNbArtiste = *VNbArtiste + 1;
     
                             }
                             else
                             {
                                  // VTabEnreg[0][*VNbEnreg] = Ve2;
                             }
                       }
                       else
                       {
                             cout<<"Album déjà répertorié"<<endl;
                       } 
     
                  }
                  else
                  {
                             cout<<"Tableau des enregistrement plein"<<endl;
                  }
     
              }    
              else
              {
                        cout<<"Tableau des albums plein"<<endl;
              }    
     
     
              cout<<"Enregistrer un nouvel album(o/n)?";
              cin>>VChoix1;
              cin.ignore(1,'\n'); 
     
     
         }
         while(VChoix1 != "n");         
     
    }

    Edit par JolyLoic :

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 107
    Points : 122
    Points
    122
    Par défaut
    pour la ligne :

    VTabEnreg[1][*VNbEnreg] = *VNbAlbums;

    je vois que VTabEnreg est un tableau d'entier et pas un tableau de tableau, etc

    Conseils :
    - sauf raisons particulière utilise des références comme cela tu es toujours sûr que l'objet est valide :
    void AjoutAlbum(Album VTabAlb[], int &VNbAlbums, Artiste VTabArt[], int &VNbArtiste,
    int VTabEnreg[299], int &VNbEnreg)

    - sauf raisons particulière utilise des tableaux de la STL comme cela c'est plus simple :
    void AjoutAlbum(std::vector<Album> &VTabAlb, int &VNbAlbums, std::vector<Artiste> &VTabArt, int &VNbArtiste,
    std::vector<int> VTabEnreg, int &VNbEnreg)

    en bref utilise vraiment le C++ (utilise la STL, la librairie boost, les références, des objets, des flots) ; sinon tu fait du C compilé avec un compilo C++

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    okok je te remercie pour les conseils.
    Par contre je vois pas ce que tu entends par "tableau de tableau".

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 107
    Points : 122
    Points
    122
    Par défaut
    int VTabEnreg[299] ====> tableau d'entier

    VTabEnreg[1][*VNbEnreg] c'est :
    VTabEnreg[1], noté AAA

    puis
    AAA[*VNbEnreg]

    donc AAA[*VNbEnreg] ===> laisse penser que AAA est un tableau
    or AAA est VTabEnreg[1], c'est à dire un entier

    peut être voulais-tu un tableau à deux dimensions en entrée de fonction ?

    Rq : int VTabEnreg[299] ====> je dirais que ca n'a aucun sens, car le compilateur ne vérifiera pas que le tableau à 299 cases

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Oui c en 2 dimensions que je veux le tableau, c'est d'ailleur ainsi que je l'ai déclarer dans le "int main" de mon programme:
    int VTabEnreg[1][299];


    Pour le VTabEnreg[299]:
    je pensai que dans les paramètre des fonctions ont devait mettre le nombre de colonne entre croché quand on passe un tableau à 2 dimensions.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 107
    Points : 122
    Points
    122
    Par défaut
    Oui c en 2 dimensions que je veux le tableau.
    Et bien va falloir changer le paramètre de la fonction

    je pensai que dans les paramètre des fonctions ont devait mettre le nombre de colonne entre croché quand on passe un tableau à 2 dimensions.
    Nop il te faut réviser ton C, et les pointeurs.


    P.S. : indice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void AjoutAlbum(Album VTabAlb[], int *VNbAlbums, Artiste VTabArt[], int *VNbArtiste, int **VTabEnreg, int *VNbEnreg)
    pour le reste bon courage, pense à utiliser valgrind, je pense que tu en aura besoin.

Discussions similaires

  1. Erreur non comprise
    Par PadawanInPerl dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 15/06/2012, 13h51
  2. erreur non comprise dans script
    Par lebelfortain1 dans le forum Langage
    Réponses: 7
    Dernier message: 22/06/2011, 15h29
  3. Pb d'affichage.erreur non comprise
    Par l_seringa dans le forum C++Builder
    Réponses: 12
    Dernier message: 28/03/2008, 19h25
  4. Erreur non Comprise
    Par Fahmi06 dans le forum Ubuntu
    Réponses: 1
    Dernier message: 12/03/2008, 17h43
  5. erreur non comprise cherche solution
    Par debC++ dans le forum C++
    Réponses: 12
    Dernier message: 17/06/2005, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo