ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ordenar array de string

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
carlos_cd
Novato
Novato


Registrado: Quinta-Feira, 29 de Mai de 2008
Mensagens: 12

MensagemEnviada: Ter Dez 30, 2014 1:45 pm    Assunto: Ordenar array de string Responder com Citação

Ola a todos.
Estou precisando ordenar as linhas de uma array of string, mas não estou conseguindo.
Usei o método BubbleSort, mas ele ordena o indice da array e eu preciso ordenar o conteúdo de uma linha
Ex: 12 56 32 10 > 10 12 32 56

Desde já agradeço
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1030
Localização: Cianorte-PR

MensagemEnviada: Ter Dez 30, 2014 1:51 pm    Assunto: Responder com Citação

da uma olhada pra ver se te ajuda:
http://www.devmedia.com.br/forum/comando-para-ordenar-arrays/331201
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Sáb Jan 03, 2015 9:44 am    Assunto: Responder com Citação

pq não usa um stringlist?

e não entendi o ordenou o indice do array. como assim?

e pq não usa quicksort, mais simples e mt mais rápido.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Sáb Jan 03, 2015 11:42 am    Assunto: Responder com Citação

O problema é que ele tem um array de string e cada string possui alguns numeros separados por espaços e ele que ordenar estes numeros contido em cada string.

A questao me parece ser bem facil, quando eu chegar em casa dou um help.
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Sáb Jan 03, 2015 12:43 pm    Assunto: Responder com Citação

Bom como prometido ai vai o código

Código:
function OrdeneStr(mask, txt: string): string;
var
  num: array of integer;
  a, b, tmp: integer;
begin
  // convertendo uma string em array de integer
  while length(txt) > 0 do
    if pos(' ', txt) <> 0 then
    begin
      setlength(num, length(num) + 1);
      num[high(num)] := strtoint(trim(copy(txt, 1, pos(' ', txt))));
      delete(txt, 1, length(copy(txt, 1, pos(' ', txt))));
    end
    else if length(txt) > 0 then
    begin
      setlength(num, length(num) + 1);
      num[high(num)] := strtoint(trim(txt));
      txt := '';
    end;

  // ordenando o array integer
  for a := Low(num) to High(num) do
    for b := a + 1 to High(num) do
      if num[a] > num[b] then
      begin
        tmp := num[a];
        num[a] := num[b];
        num[b] := tmp;
      end;

  // convertendo o array de integer em string
  result := '';
  for a := Low(num) to High(num) do
    result := result + formatfloat(mask, num[a]);
end;


Dos exemplo de uso

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  x: integer;
begin
  for x := 0 to Memo1.Lines.Count - 1 do
    Memo1.Lines.Strings[x] := OrdeneStr(' 00', Memo1.Lines.Strings[x]);
end;



Nota:
1- Só usar OrdeneStr() se a string possui apenas números e espaços.
2- mask é uma formatação para os numero na nova string tal como no formatfloat.

Espero que lhe seja útil em algo :)
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Seg Jan 05, 2015 9:54 am    Assunto: Responder com Citação

eu tinha entendido q era um array de string

sobre ordenar qq estrutura, veja essa discursão.

https://groups.google.com/d/msg/lazarus-br/_c9Evp9m5FQ/4BF-0Wv8N2AJ
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB