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#

  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.

  8. #8
    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
    Bonjour encore,

    Je vous remercie tous a vos efforts de m'aider.

    Ce que je cherche c'est trouver et d'afficher l'indice qui contient l'element minimal du tableau mais pas l'element lui meme.
    Le code de DonQuiche me permet de trouver l'element minimal du tableau alors que je je veux afficher l'indice que appartient cet element. Et celui de Rotrevrep m'a permit d'effectuer une comparaison qui affiche seulement l'element le plus petit dans les 2 derniers cases du tableau.

    par exemple s'il contient 2,52,0,1,3. Il m'affiche la position de 1 au lien de 0.

    Merci de votre aide.

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut
    Comme DonQuiche l'a écrit :
    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
    Te donner le code tout fait ne t'apprendra rien

  10. #10
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    rectifier le code de DonQuich, et ajoute un autre variable qui enregistre l'indice au cours de la boucle

    j'ajoute sur les note de DonQuich, tu initialise pas "compteur" que tu peux remplacer par (i+1)

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, 16h10
  2. Trouver un champ dans un tableau
    Par snaxisnake dans le forum Delphi
    Réponses: 6
    Dernier message: 30/05/2006, 17h37
  3. Réponses: 11
    Dernier message: 26/05/2006, 18h51
  4. Réponses: 2
    Dernier message: 11/04/2006, 23h54
  5. [Tableaux] Recuperer le plus grand indice d'un tableau
    Par schnito dans le forum Langage
    Réponses: 4
    Dernier message: 31/01/2006, 21h01

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