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

Langage Delphi Discussion :

Comment récupérer le [x] dans un tableau ?


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 71
    Points : 59
    Points
    59
    Par défaut Comment récupérer le [x] dans un tableau ?
    J'ai une sortie[a] de 1 a 49 que j'ai classer en ordre
    décroissant, ca fonctionne bien mais j'aimerais bien
    récupérer la valeur [a] associé au nombre mais comment faire
    dois je créer un tableau double ???

    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
    var a,b,c:integer;
    begin
    for a:=1 to 49-1 do
        For b:=a+1 To 49 do
      If sortie[a]<sortie[b] Then
      Begin
        c:=sortie[a];
        sortie[a]:=sortie[b];
        corresp[d]:=b;
        sortie[b]:=c;
      End;
     
      for a:= 1 to 49 do
      listbox1.items.Add(inttostr(sortie[a]));
     
    end;
    J'aimerais bien afficher dans le listbox ex: 20 chiffre 4, 10 chiffre 5, 8 chiffre 6 ect...

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Quelque chose comme ça ?

    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
     
    var
      I, Val, Count: Integer;
    const
      ItemText = 'Valeur %d: %d sortie(s)';
    begin
      // Remplissage du ListBox
      ListBox1.Clear;
      Val := Sortie[Low(Sortie)];
      Count := 1;
      for I := Low(Sortie) + 1 to High(Sortie) do
      begin
        if (Val = Sortie[I]) then
          Inc(Count)
        else
        begin
          ListBox1.Items.Add(Format(ItemText, [Val, Count]));
          Val := Sortie[I];
          Count := 1;
        end;
      end;
      ListBox1.Items.Add(Format(ItemText, [Val, Count]));
    end;
    @+ Claudius

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    C'est bon pour faire le compte des numeros sortant (bonne idée / je conserve le code), mais se n'est pas exactement ce que je veux. Ok comme le code
    afficher les numero sortant sont en ordres décroissant, mais j'aimerais également récupérer le [x] pour chaque sortie a l'origine.

    Pouvez vous m'aider .....

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Citation Envoyé par cre3000 Voir le message
    ...mais j'aimerais également récupérer le [x] pour chaque sortie a l'origine.
    En fait je saisi mal ce que tu veux faire.
    Tu as un p'tit exemple ?

    @+ Claudius

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Pourriez vous précisser le problème S.V.P.

    Ce que j'ai compris est ceçi :

    Vous avez un tableau de string dont le nom est "Sortie", allant de 1 à 49.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      sortie: Array [1..49] of string;
    Vous Savez extraire le contenue de sortie pour une vleur I entre 1 et 49.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Valeur := Sortie[I];
    Votre valeur sortie est trié dans un ordre quelconque.

    Vous désirez sauvegarder la position original d'une sortie avant le trie.

    Si c'est bien cela, vous pouvez :
    * sauvegarder votre valeur originale avant le trie (conserver lun double du tableau original par exemple)
    * Utiliser non pas un tableau mais un TstringList et sauvegarder la valeur originale dans la propriété object du Tstringliste.
    Nota: Dans ce cas vous n'aurez pas forcement besoin de modifier le reste du programme. vous pouvez utiliser un TStringList d'un autre nom que sortie, et utiliser une property Sortie pour y avoir accés.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    Dois je affecté un autre tableau pour conserver le tableau original?
    J'avais pensé a créer un tableau double mais je ne connais pas la facon
    de procèdé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sortie:array[1..300] of integer;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sortie:array[1..300,1..300] of integer;
    j'ai joint une image du tableau avec la sortie en
    ordre décroissant, j'aimerais associé la deuxième ranger avec la première
    dans la sortie.

    comment faire, je suis un amateur

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    pardon mauvais lien

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Cela serait plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sortie:array[1..300,1..2] of integer;
    vous pouvez dans ce cas faire :
    Avec n1 entre 1 et 300 et n2 entre 1 et 2

    En Delphi l'habitude est de partir de 0 et non de 1 (comme pour les tableaux dynamiques). Cela donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sortie:array[0..299,0..1] of integer;
    Ce n'est qu'un détaille. Par contre la limite vient du faite que vous ne pouvez stoker qu'un seul type de variable dans ce tableaux (Dans l'exemple des interger).

    Pour stoker des donnée plus complex, vous devriez stoker des record
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    type
        TMyRecord = record
          Text: String
          Index: Integer;
          AutreValeur: ????
        end;
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sortie:array[0..299] of  TMyRecord;
    Ou stoker dans autre chose qu'un tableaux.
    C'est pour cela que j'avais proposer un TStringList. Il es capable de stoker 2 information. 1 texte est un objet. L'objet pouvant être transtypé en integer.
    J'avais crut comprende que votre donnée principale était un String.

  9. #9
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 871
    Points : 11 361
    Points
    11 361
    Billets dans le blog
    6
    Par défaut
    si on veut trier 255 sorties de 1 à 6, on peut aussi utiliser des tableaux doubles :
    var TResultab=array[1..6 ; 0..255] of integer;
    en balayant avec a :
    Inc (Resultab[Sortie[a], 0]; // on se sert de la case 0 comme compteur des valeurs obtenues
    Resultab[Sortie[a], Resultab[Sortie[a], 0]]:=a; // on sauve la position
    et plus besoin de trier...
    il est bien sûr plus élégant d'utiliser des tableaux dynamiques

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/08/2008, 21h58
  2. Réponses: 5
    Dernier message: 20/07/2007, 15h15
  3. Comment récupérer l'indice dans un TdxTreeList ?
    Par claude dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/12/2004, 15h17
  4. MAKEFILE : Comment récupérer l'OS dans le makefile
    Par nana1 dans le forum Systèmes de compilation
    Réponses: 12
    Dernier message: 14/09/2004, 16h23
  5. Réponses: 6
    Dernier message: 30/04/2004, 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