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 :

trouver l'indice d'un tableau


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Par défaut trouver l'indice d'un tableau
    Bonjour tout le monde,


    Merci a l'avance de m'aider.

    J'ai petit programme en C#, je voulais trouver et afficher l'indince d'un element dans le tableau. Il s'agit en partculier de savoir quel indice du tableau se trouve l'element le plus petit. Les elements sont passés en parametre.

    Voici mon petit 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
                int[] tab = new int[10];
     
                Console.WriteLine("Combient d'élèves comporte la promo souhaitée ? ");
                int nb_element = Convert.ToInt32(Console.ReadLine());
     
                for (i = 0; i < nb_element; i++)
                {
                    Console.WriteLine("Entrer l'element de l'indice n° " + i);
                    tab[i] = Convert.ToInt32(Console.ReadLine());
                    compteur += 1;
                    somm += tab[i];
                    moyen_promo = somm / compteur;
                }
                for (i = 0; i < nb_element; i++)
                {
                    if (tab[i] < tab[i + 1])
                        MIN = tab[i];
     
                }
                Console.WriteLine("la position " + tab[i] + "  contient l'element le plus bas :");
    Quiconque peut m'aider, je lui serai reconnaisant.

  2. #2
    Inactif  

    Homme Profil pro
    développeur Vala
    Inscrit en
    Février 2011
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 478
    Par défaut
    bonsoir .
    à ton programme, rajoute cette boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int indice = 0;
    for(int j=0;j<nb_element;j++)
    {
    if(tab[j]==MIN){indice=j;break;}
    }
    Console.WriteLine("La position "+indice.ToString()+" contient l'élément le plus bas");

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Par défaut
    Veux-tu absolument utiliser un tableau ? Parce sinon avec une liste tu pourrais utiliser les méthodes Min() et IndexOf() pour facilement trouver ton index

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Par défaut
    No, vraiment ne je suis pas obligé d'utilser un talbeau mais le probleme tant que je un debutant je ne sais pas utiliser la liste.

    En outre la reponse na pas marché. Le compilateur m'affiche le message d'erreur suivant:

    'int' ne contient pas une définition pour 'toString' et aucune méthode d'extension 'toString' acceptant un premier argument de type 'int' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?)

    Voila encore mon code comment je le procedé:

    Code c# : 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
    int[] tab = new int[10];
                int  compteur=0,somm=0,i,MIN ;
                float moyen_promo=0;
                int nb_element;
                Console.WriteLine("Combient d'élèves comporte la promo souhaitée ? ");
                 nb_element = Convert.ToInt32(Console.ReadLine());
     
                for ( i = 0; i < nb_element; i++)
                {
                    Console.WriteLine("Entrer l'element de l'indice n° " + i);
                    tab[i] = Convert.ToInt32(Console.ReadLine());
                    compteur += 1;
                    somm += tab[i];
                    moyen_promo = somm / compteur;
                }
                /*for (i = 0; i < nb_element; i++)
                {
                    if (tab[i] < tab[i + 1])
                        MIN = tab[i];*/
     
                int indice = 0;
                for (int j = 0; j < nb_element; j++)
                {
                    if (tab[j] == MIN) { indice = j; break; }
                }
                Console.WriteLine("La position " + indice.toString() + " contient l'élément le plus bas");

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    C'est ToString et pas toString
    Il faut respecter la casse.

  6. #6
    Inactif  

    Homme Profil pro
    développeur Vala
    Inscrit en
    Février 2011
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 478
    Par défaut
    Citation Envoyé par binoo Voir le message
    Salut,

    C'est ToString et pas toString
    Il faut respecter la casse.
    en effet . erreur corrigée

  7. #7
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonsoir.

    Avant toute chose je te suggère d'ignorer le code de Rotrevrep, il avait visiblement mal compris : son code ne serait valable que si MIN était déjà connu.

    Reprenons ta dernière boucle. Elle a deux problèmes : d'abord elle compare un élément avec son suivant. Si les deux derniers éléments sont 5 et 6, elle renverra 5 même s'il y avait des éléments inférieurs avant cela. Ensuite, dans le cas de dix promos, elle dépasse la fin du tableau et provoque donc une exception (quand on considère l'élément "i+1" il faut une clause "i < tab.Length-1" ou, ici, "i < nb_elements - 1").

    Voilà un exemple typique de recherche de la valeur minimale. Je te laisse modifier le code pour en faire une recherche de l'index de la valeur minimale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Aucune promo ne devrait avoir 2+ milliards d'élèves, donc on part de ce nombre et on considère que c'est le minimum trouvé jusque là. La première promo trouvée remplacera ce nombre.
    int min = Int32.MaxValue;
    for (i = 0; i < nb_element; i++)
    {
        if (tab[i] < min)
        {
            min = tab[i];
        }
    }

    PS : La liste serait bien plus simple pour un débutant :
    * List<int> list = new List<Int>() pour initialiser.
    * list.Add(i) pour ajouter un élément
    * list.Count et list[i] pour parcourir la liste, voire...
    * foreach(int val in list)
    Qui plus est ça ne planterait pas si l'on ajoute plus de dix promos (cas non-couvert par ton code et qui génèrera une exception incompréhensible pour l'utilisateur).


    PPS : Tu ne traites pas non plus le cas où l'utilisateur a rentré autre chose qu'un nombre, le programme plantera d'une façon peu élégante.

Discussions similaires

  1. [WD-2010] Trouver l'indice d'un tableau en fonction du contenu
    Par Bragu Demon dans le forum VBA Word
    Réponses: 2
    Dernier message: 19/02/2015, 15h10
  2. Trouver un champ dans un tableau
    Par snaxisnake dans le forum Delphi
    Réponses: 6
    Dernier message: 30/05/2006, 16h37
  3. Réponses: 11
    Dernier message: 26/05/2006, 17h51
  4. Réponses: 2
    Dernier message: 11/04/2006, 22h54
  5. [Tableaux] Recuperer le plus grand indice d'un tableau
    Par schnito dans le forum Langage
    Réponses: 4
    Dernier message: 31/01/2006, 20h01

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