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

Ada Discussion :

Tri par selection d'un tableau de 100 entiers


Sujet :

Ada

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Tri par selection d'un tableau de 100 entiers
    Bonsoir,

    j'essaye de créer un programme qui me permettrai de trier par ordre croissant les valeurs d'un tableau de 100 entiers. Pour cela j'ai recours à une fonction qui me retourne l'indice de la plus grande valeur contenu dans une portion du tableau comprise entre l'indice 1 et un autre indice donné.

    Voici cette fonction :

    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
    function IND_DU_MAX ( Tab : IN T_Vect_Entier ; Borne : IN Integer) return integer IS
     
       --Action : retourne l'indice de la plus grande valeur de tab comprise entre les indices 1 et la valeur de 'borne'
     
       Max : Integer;
     
       BEGIN
          Max:=0;
          FOR I IN 1..Borne LOOP
             IF Tab(I) > Max
                   THEN Max:=I;
             END IF;
          END LOOP;
          RETURN Max;
       END IND_DU_MAX;
    Mais pour une raison qui m'échappe elle me renvoie systématiquement la valeur de la variable 'borne' (qui correspond à la borne supérieur).

    Pourquoi?

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
             IF Tab(I) > Max
                   THEN Max:=I;
    Il y a un gros problème ici. Tu mélanges à la fois une valeur du tableau T(i) et un indice du tableau (i).

    Comme je n'ai pas saisi ce que tu veux faire exactement, c'est à toi de corriger (soit tu veux la valeur maximale du tableau, soit tu veux l'indice du tableau)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bah si on traduit litteralement ça donne :
    "Si la valeur contenu dans case d'indice I est supérieur à ma variable 'Max' alors ma variable 'Max' reçoit l'indice de celle-ci (uniquement l'indice!)"

    Non?

    Ce que je veux c'est l'indice de la valeur maximum du tableau dans ma variable 'Max'

    Par contre je viens de me rendre compte que mon commentaire n'est pas bon. Ca doit être ça qui t'a troublé.

  4. #4
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    "Si la valeur contenu dans case d'indice I est supérieur à ma variable 'Max' alors ma variable 'Max' reçoit l'indice de celle-ci (uniquement l'indice!)"
    C'est bien ce que j'avais compris. Relis-toi tu verras qu'il y a un problème : tu mélange indice et contenu du tableau. C'est sans doute (sûrement) pour ça que ça ne fonctionne pas.

    Il te faut deux variables :

    -> Une qui maintient à jour la plus grande valeur du tableau
    -> Une autre qui garde l'indice de cette plus grande valeur.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oui effectivement ! Je test ça et je te dis ce que ça donne.

    Merci beaucoup.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Ca marche nikel. Merci beaucoup

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

Discussions similaires

  1. Tri par selection
    Par mouned dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 30/11/2009, 15h43
  2. tri par selection recursif
    Par valanscu77 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 06/11/2007, 18h58
  3. tri par selection
    Par houdabouayed dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 27/01/2007, 15h01
  4. Tri par fusion d'un tableau
    Par Mailgifson dans le forum C
    Réponses: 5
    Dernier message: 12/12/2002, 15h53

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