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 C2109: un indice requiert un type tableau ou pointeur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Par défaut Erreur C2109: un indice requiert un type tableau ou pointeur
    Bonjour,

    J'ai écrit un programme qui cherche le plus grand nombre dans un tableau, mais j'ai une erreur de type C2109: un indice requiert un type tableau ou pointeur à la ligne 21 et 23. Voici mon code:

    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
    #include <iostream> 
    
    using namespace std;
    
    int plusGrand2(int* tableau, const int LONGUEUR, int plusGrand);
    
    const int LONGUEUR = 20;
    
    void main()
    {
    	int tableau [20] = {1, 2, 6, 5, 2, 1, 9, 8, 1, 5, 15, 2, 6, 5, 2, 1, 9, 8, 1, 5};
    	int plusGrand = 0;
    	plusGrand = plusGrand2(tableau, LONGUEUR, plusGrand);
    	system ("pause");
    }
    
    int plusGrand2 (int tableau, int plusGrand)
    {
    	for (int i = 1; i < LONGUEUR + 1; i++)
    	{
    		if (tableau[i] > tableau[i - 1])
    		{ 
    			plusGrand = tableau[i];
    		}
    	}
    	return plusGrand;
    }
    Les lignes en gras et soulignés sont où j'ai des erreurs.

    Merci d'avance

  2. #2
    Membre Expert Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Par défaut
    il y a un souci dans ta déclaration/définition :

    int plusGrand2(int* tableau, const int LONGUEUR, int plusGrand);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int plusGrand2 (int tableau, int plusGrand)
    {
    }
    le proto à 3 paramètres : 1 pointeur et 2 entiers
    apes tu définis 2 paramètres : 2 entiers.

    il y a des trucs pas logiques :
    - soit tu mets LONGUEUR en variable globale et tu ne le passes pas en paramètre
    - soit tu mets LONGUEUR en variable locale et tu le passe sen paramètre

    En gros ca pourrait etre :
    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
    #include <iostream> 
    
    using namespace std;
    
    int plusGrand2(int* tableau, const int LONGUEUR, int plusGrand);
    
    const int LONGUEUR = 20;
    void main()
    {
    int LONGUEUR = 20;
    	int tableau [20] = {1, 2, 6, 5, 2, 1, 9, 8, 1, 5, 15, 2, 6, 5, 2, 1, 9, 8, 1, 5};
    	int plusGrand = 0;
    	plusGrand = plusGrand2(tableau, LONGUEUR, plusGrand);
    	system ("pause");
    }
    
    int plusGrand2(int* tableau, int LONGUEUR, int plusGrand)
    {
    	for (int i = 1; i < LONGUEUR + 1; i++)
    	{
    		if (tableau[i] > tableau[i - 1])
    		{ 
    			plusGrand = tableau[i];
    		}
    	}
    	return plusGrand;
    }
    oui meme un "define" (plus simple ):
    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
    #include <iostream> 
     
    using namespace std;
     
    int plusGrand2(int* tableau int plusGrand);
     
    #define LONGUEUR 20
    void main()
    {
    	int tableau [LONGUEUR] = {1, 2, 6, 5, 2, 1, 9, 8, 1, 5, 15, 2, 6, 5, 2, 1, 9, 8, 1, 5};
    	int plusGrand = 0;
    	plusGrand = plusGrand2(tableau, plusGrand);
    	system ("pause");
    }
     
    int plusGrand2(int* tableau, int plusGrand)
    {
    	for (int i = 1; i < LONGUEUR + 1; i++)
    	{
    		if (tableau[i] > tableau[i - 1])
    		{ 
    			plusGrand = tableau[i];
    		}
    	}
    	return plusGrand;
    }

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Pourquoi mélanger du C et du C++ ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Par défaut
    lol merci de ta réponse fregolo52, mon programme fonctionne maintenant

  5. #5
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    mon programme fonctionne maintenant
    Il compile et s'exécute peut-être sans planter mais ne fait absolument pas ce que tu veux !

    Déjà, dans la fonction plusGrand2, tu tapes "à côté" du tableau, lors de la dernière itération (quand le compteur i vaut LONGUEUR : tableau[LONGUEUR] ...)

    Et puis ton algo ne trouve pas le max des éléments.
    Il retourne le dernier (dans le sens des indices croissants) élément qui est supérieur à l'élément précédent.
    Sur ton exemple, et hors problème d'indice signalé précédemment, plusGrand prend successivement les valeurs 2, 6, 9, 5, 15, 6, 9, 5 et la fonction retourne 5

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/05/2014, 15h05
  2. Réponses: 9
    Dernier message: 10/06/2013, 09h24
  3. Réponses: 2
    Dernier message: 08/12/2008, 13h32
  4. Réponses: 6
    Dernier message: 12/10/2003, 14h57
  5. Fonction de type tableau
    Par Charles f dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2002, 14h04

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