Tri de tableau de valeurs numériques de type réel [Résolu]

Messages postés
8
Date d'inscription
jeudi 25 novembre 2004
Dernière intervention
7 juillet 2015
- 13 août 2008 à 17:56 - Dernière réponse :
Messages postés
8
Date d'inscription
jeudi 25 novembre 2004
Dernière intervention
7 juillet 2015
- 16 août 2008 à 21:42
Bonjour à tous,

Je souhaite trier dans un ordre croissant un tableau de valeurs numériques de type réel .
Et ensuite afficher le rang de ces valeurs et non les valeurs mêmes. Ces nombres seront
entrés en saisie dans le composant TEdit sous forme de texte. Comment réaliser le tri en (delphi5)
et aussi Comment gérer le séparateur décimal ?

merci pour votre aide 

     

Je suis heureux de faire partie de la grande famille du Club DelphiFR.com

Dzidzi
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 13 août 2008 à 18:27
3
Merci

Merci cs_cantador 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_cantador
Meilleure réponse
Messages postés
8
Date d'inscription
jeudi 25 novembre 2004
Dernière intervention
7 juillet 2015
- 14 août 2008 à 02:17
3
Merci
Bonsoir Foxi

Merci pour les fonctions de conversion. J'ai pris note.
 
 

Je suis heureux de faire partie de la grande famille du Club DelphiFR.com

Dzidzi

Merci cs_Dzidzi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_Dzidzi
Meilleure réponse
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 14 août 2008 à 11:38
3
Merci
Je dispose d'un tableau de réels de 30 éléments saisie dans un TEdit (type chaine)
que je souhaite trier dans un ordre croissant des valeurs et récupérer ensuite leur classement (rang).

J'avais soulevé un souci identique avec Florenth.
voir les réponses apportées sur ce forum..
un exemple avait été fourni avec des tableaux...

cantador

Merci cs_cantador 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_cantador
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 14 août 2008 à 00:10
0
Merci
gestion du separateur de decimale via la constante DecimalSeparator

fonction utile de conversion (voir aide) :

StrToFloat
TryStrToFloat
StrToFloatDef

Commenter la réponse de f0xi
Messages postés
8
Date d'inscription
jeudi 25 novembre 2004
Dernière intervention
7 juillet 2015
- 14 août 2008 à 02:12
0
Merci
Bonsoir Cantador,

J'ai pu accéder  au QuickSort grace au lien que vous m'avez proposé en réponse à ma recherche.
Toutefois étant débutant j'ai du mal à l'adapter à mon cas.
 Voici le problème:

Je dispose d'un tableau de réels de 30 éléments saisie dans un TEdit (type chaine)
que je souhaite trier dans un ordre croissant des valeurs et récupérer ensuite leur classement (rang).

D'aute part comment initialiser le séparateur décimal? J'ai essayé DecimalSeparator:=','; ça nemarche pas .
mon environnement est Delphi 5. 

merci pour votre aide

Je suis heureux de faire partie de la grande famille du Club DelphiFR.com

Dzidzi
Commenter la réponse de cs_Dzidzi
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 14 août 2008 à 04:46
0
Merci
le separateur de decimale est definit par defaut a ","

on peu le changer par exemple en "."

DecimalSeparator := '.';

ce serait stupide de mettre autre chose.

dans l'evenement OnKeyPress du TEdit tu peu mettre ce code :

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
  if Key in ['.', ','] then
    Key := DecimalSeparator;
end;

cela remplacera la saisie de l'utilisateur par le separateur decimal du systeme (ou du programme si definit a autre chose).
exemple :
decimalseparator = ,

0.15 devient 0,15
0,15 devient 0,15

decimalseparator = .

0.15 devient 0.15
0,15 devient 0.15

les fonctions de conversion utilisent decimalseparator.

Commenter la réponse de f0xi
Messages postés
8
Date d'inscription
jeudi 25 novembre 2004
Dernière intervention
7 juillet 2015
- 15 août 2008 à 04:01
0
Merci
Bonsoir à tous,


J'ai eu du mal à chercher dans les documents du forum votre  échange avec Florenth concernant  
'Tri de tableau de valeurs numériques de type réel' Toutesfois j'y ai trouvé beaucoup d'exemples
de tri de tableau de valeurs de types variés. Je vais donc essayer d'adapter les solutions trouvées à mon
problème de tri.
 
Reste le problème d'affichage des rangs ou positions des valeurs du tableau trié sachant que si deux
valeurs sont égales on affiche le rang le plus faible en premier.

Merci pour votre aide et orientation.  

 

Je suis heureux de faire partie de la grande famille du Club DelphiFR.com

Dzidzi
Commenter la réponse de cs_Dzidzi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 15 août 2008 à 12:28
0
Merci
toutes les discussions ne sont pas conservées (il y en a de trop !)

avec çà, tu devrais t'en sortir : (chez moi ça marche..)

function TFJeu.SGCompare(i, j: Integer): Integer;
var
  N1, N2: Integer;
begin
  N1 := tab1EM[i];
  N2 := tab1EM[j];


  if N1 > N2 then
    Result := -1
  else
    if N1 < N2 then
      Result := 1
    else
      Result := 0;
end;


procedure TFJeu.SGExchange(i, j: Integer);
var
  tt0, tt1: integer;
begin
  {>> Echange des nombres }
  tt0 := tab1EM[i];
  tt1 := tab2EM[i];
  tab1EM[i] := tab1EM[j];
  tab2EM[i] := tab2EM[j];
  tab1EM[j] := tt0;
  tab2EM[j] := tt1;
end;


et


with TQuickSort.Create(SGcompare, SGExchange) do
  SortAndFree(0, high(tab1EM));

cantador
Commenter la réponse de cs_cantador
Messages postés
8
Date d'inscription
jeudi 25 novembre 2004
Dernière intervention
7 juillet 2015
- 15 août 2008 à 19:11
0
Merci
Bonsoir à tous,


Le code pseudo langage qui représente votre dernière réponse à mes soucis de tri d'un tableau de valeurs de type reel
et affichage  comme résultat du tri leurs indices plutôt que les valeurs, est pourtant assez clair; mais je n'est pas pu le reproduire correctement sous mon environnement de développement ( Windows XP et Delphi 5 personnal).  


La partie déclaration du tableau de réels à trier? quelques commentaires et le developement du tri QuickSort()? 
étant débutant, j'avoue que cela ne m'est pas évident.

Si cela ne vous pose pas de problème, je serai preneur de ce projet tel qu'il fonctionne sur votre machine. 
  
? notation {TFJeu.SGCompare(), TFJeu.SGExchange(), TQuickSort.Create(SGcompare, SGExchange)}

Merci pour votre aide et orientation.

Je suis heureux de faire partie de la grande famille du Club DelphiFR.com

Dzidzi
Commenter la réponse de cs_Dzidzi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 15 août 2008 à 20:01
0
Merci
oui FJeu, c'est le nom de ma form mais tu peux adapter..
il faut aussi ajouter l'unité sorts.pas.
j'ai compris qu'il te faut un code complet.
désolé, mais je n'ai plus le temps.

un autre t'aidera sûrement..

cantador
Commenter la réponse de cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 15 août 2008 à 20:54
0
Merci
et puis si tu es
"heureux de faire partie de la grande famille du Club DelphiFR.com"

nous ici, notre plaisir ce n'est pas de trouver mais de chercher !
alors, fais un petit effort d'apprendre à fouiller car à se servir du tout maché, on ne va pas bien loin.

cantador
Commenter la réponse de cs_cantador
Messages postés
8
Date d'inscription
jeudi 25 novembre 2004
Dernière intervention
7 juillet 2015
- 16 août 2008 à 21:42
0
Merci
Un très bon conseil qui me stimule, car je suis désireux d'apprendre pour pouvoir demain venir en aide aux autres... J'ai d'ailleurs repris le chemin  des cours pour débutants, en attendant j'aurai surement besoin du forum: Club DelphiFR.com.. Auriez-vous une adresse de tutoriel delphi que vous trouvez bien conçu à me conseiller?   

Je suis heureux de faire partie de la grande famille du Club DelphiFR.com

Dzidzi
Commenter la réponse de cs_Dzidzi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.