Tri dans tableau à dimensions multiples & sauvegarde

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ganagyre
Messages : 67
Inscription : jeu. 09/nov./2006 13:41
Localisation : PACA

Tri dans tableau à dimensions multiples & sauvegarde

Message par Ganagyre »

Bonjourà tous .

1)

Comment trier en ordre Decroissant ou Croissant une colonne au choix d'un tableau à dimensions multiples , avec comme contrainte de garder les elements des lignes ?

Exemple :
soit un tableau de 5 colonnes sur 1000 lignes.

Dim Tableau.l(5,1000)

Avec en ligne 1000 du tableau

Tabeau(0,1000) = 124
Tabeau(1,1000) = 1
Tabeau(2,1000) = 22
Tabeau(3,1000) = 125
Tabeau(4,1000) = 456
Tabeau(5,1000) = 8

Si on tri par colonne 4 et que justement la colonne 4 de cette ligne 1000 contienne la valeur maxi ( la premiere valeur maxi ), comment mettre en
premier dans le tableau (5,1) les valeurs de Tableau(5,1000)

Tabeau(0,1) = 124
Tabeau(1,1) = 1
Tabeau(2,1) = 22
Tabeau(3,1) = 125
Tabeau(4,1) = 456
Tabeau(5,1) = 8

Et faire de meme pour le restant ?

2) Comment faire une sauvegarde en fichier *.txt de ce meme tableau à dimensions multiples, avec comme separateur des valeurs le point virgule et un retour à la ligne , du style :

124;1;22;125;456;8
121,1,26,842;455;19
...

Merci de toute infos.

@+
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Bonjour

Soft modifié j'avais oublié la question sauvegarde !

Voilà une manière de proceder, mais désolé je n'ai pas eu le temps de commenter :
Le sytème est Le même pour 1, 5, 1000 ou 23598 lignes
ici j'ai pri 4 lignes pour verifier facilement le programme

Code : Tout sélectionner



Global NbrLigne = 4
RandomSeed(5)

Global Dim Tableau.l(5,NbrLigne-1)
Structure Tab
  Element1.l
  Element2.l
  Element3.l
  Element4.l
  Element5.l
EndStructure
  
Procedure ExempleRemplissage()
  For n=0 To NbrLigne-1
    Tableau(1,n)= n :
    Tableau(2,n)=10-n
    Tableau(3,n)=Random(100) 
    Tableau(4,n)=10+n
    Tableau(5,n)=Random(200) 
  Next
EndProcedure

Procedure affiche()
  For n=0 To NbrLigne-1
    Debug Tableau(1,n)
    Debug Tableau(2,n)
    Debug Tableau(3,n)
    Debug Tableau(4,n)
    Debug Tableau(5,n)
    Debug " "
  Next 
EndProcedure

Procedure Trie(offset,Sens)

  NewList TriTab.Tab()
  For n=0 To NbrLigne-1
    AddElement(TriTab())
    TriTab()\Element1 = Tableau(1,n)
    TriTab()\Element2 = Tableau(2,n)
    TriTab()\Element3 = Tableau(3,n)
    TriTab()\Element4 = Tableau(4,n)
    TriTab()\Element5 = Tableau(5,n)
  Next
  
  ; trie sur la troisième colonne croissant :
  
  SortStructuredList(TriTab(), Sens, offset, #PB_Sort_Long)
  n=0
  ForEach TriTab() 
    Tableau(1,n) =  TriTab()\Element1
    Tableau(2,n) =  TriTab()\Element2
    Tableau(3,n) =  TriTab()\Element3
    Tableau(4,n) =  TriTab()\Element4
    Tableau(5,n) =  TriTab()\Element5 
    n+1
  Next
  
EndProcedure

Procedure Sauve(File.s)
  CreateFile(1,File)
  For n=0 To NbrLigne-1
    WriteStringN(1,Str(Tableau(1,n))+";"+Str(Tableau(2,n))+";"+Str(Tableau(3,n))+";"+Str(Tableau(4,n))+";"+Str(Tableau(5,n)))
  Next
  CloseFile(1)
EndProcedure  


ExempleRemplissage()
affiche()
Sauve("c:\TrieNon.txt")


Debug "Trié sur le troisième élement croissant"
Trie(OffsetOf(Tab\Element3),0)
affiche()
Sauve("c:\TrieEl3C.txt")
Debug "Trié sur le cinquième élement decroissant"
Trie(OffsetOf(Tab\Element5),1)
affiche()

Sauve("c:\TrieEl5D.txt")









Avatar de l’utilisateur
Ganagyre
Messages : 67
Inscription : jeu. 09/nov./2006 13:41
Localisation : PACA

Message par Ganagyre »

Salut .


Merci brossden .

Pour cet exemple de code et le temps passé à le faire et me repondre.
Je vais etudier tout cela .

@ +
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

à ton service dans la mesure de mes moyens, je ne suis pas seul ici dans ce cas !

Je profite de ce post pour vous dire tout le bien que je pense des gens qui font parti de ce forum !!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

brossden a écrit :à ton service dans la mesure de mes moyens, je ne suis pas seul ici dans ce cas !

Je profite de ce post pour vous dire tout le bien que je pense des gens qui font parti de ce forum !!
ha ben , ça m'fais pensé que je doit acheter du dentifrice tiens !! :lol:
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Pour DoBro !

Je me prénomme Denis pas DenisE ! :wink:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

brossden a écrit :Pour DoBro !

Je me prénomme Denis pas DenisE ! :wink:
:lol: :lol: :lol: :lol: :lol: :lol: :lol:
Répondre