Jump to content


Photo

Ordernar Array


  • Faça o login para participar
3 replies to this topic

#1 xstudio

xstudio

    Normal

  • Usuários
  • 66 posts
  • Sexo:Não informado

Posted 21/07/2004, 17:39

como faço para ordernar os valores em um array()
exemplo
SQArray = array("a","d","z","h","y")

eu queria mostrar na tela em order cresecente ou descrecente.... os valores do array
lembrando que os valores são dinamicos..

tem como fazer isso???
www.7xstudio.com - Web Solution

#2 Tarkan

Tarkan

    Powered by Linux - Que inglês! ;)

  • Ex-Admins
  • 651 posts
  • Sexo:Masculino
  • Localidade:Copacabana - RJ

Posted 21/07/2004, 18:04

Olha essa função, é exatamente o que você precisa:

<%
'--------------------------------------------------------------
' Descrição:
'    Função para Ordernar numeros em ordem decrescente
'    e mostrar a quantidade de vezes que um mesmo numero
'    se repetiu dentro de um array.

' Autor:  José Antônio Gregório
' Email:  ja_gregorio@hotmail.com
'---------------------------------------------------------------

Function ordena(sequencia)
numero=sequencia

'Atribuo o qtde de 1 para cada item do array
Dim total(100)
For cont=0 To UBound(numero)
  total(cont)=1
Next

'Aqui eu agrupo os numeros iguais e somo as quantidades
For contador=0 To 100
  For count=contador+1 To UBound(numero)
    IF numero(contador)<>"anulado" And numero(contador)=numero(count) Then
      Total(contador)=Total(contador)+1
      numero(count)="anulado"
      total(count)=0
    End IF
  Next
Next

Dim maior(100), qtde(100)

'o código abaixo coloca os números em ordem decrescente
'o primeiro for indica q nº vai ser comparado com os outros
'o segundo for indica qual é o maior nº
'no 3º for eu anulo o maior numero para ele não ser novamente identificado como maior.

For cont=0 To UBound(numero)
  maior(cont)=numero(0)
  For count=1 To UBound(numero)
    IF maior(cont)< numero(count) Then
      maior(cont)=numero(count)
    End IF
  Next

  For contador=0 To UBound(numero)
    IF maior(cont)=numero(contador) Then
      numero(contador)=0
      qtde(cont)=total(contador)
    End IF
  Next
Next

'Gerando o resultado que vai ser impresso
For cont=0 To UBound(numero)
  IF qtde(cont)<>0 And maior(cont)<>"0" Then
    varResult=varResult & maior(cont) &" - "& qtde(cont)& "<br>"
  End IF
Next

ordena=varResult
End Function

organizar=array("a","d","z","h","y")
Response.write ordena(organizar)
%>

Retirada de: http://www.freecode....NRBS34228JGAHTP
Créditos pertencentes ao autor.

Abraços!

:D
' nome: gustavo veiga
' profissão: ALOG Data Centers do Brasil (analista de sistemas)
' publicidade: ALOG Data Centers do Brasil

#3 Tarkan

Tarkan

    Powered by Linux - Que inglês! ;)

  • Ex-Admins
  • 651 posts
  • Sexo:Masculino
  • Localidade:Copacabana - RJ

Posted 21/07/2004, 19:43

A mesma função acima, modificada por mim e pelo Guardião do Freecode.
Dessa vez, podendo ordenar da forma que você quiser e os números lado a lado, separados por vírgula.

<%
'--------------------------------------------------------------
' Descrição:
'    Função para Ordernar numeros em ordem decrescente
'    e mostrar a quantidade de vezes que um mesmo numero
'    se repetiu dentro de um array.

' Autor:  José Antônio Gregório
' Email:  ja_gregorio@hotmail.com
'---------------------------------------------------------------

Function ordena(sequencia,pOrder)
numero=sequencia

if pOrder = 0 then iniCont = UBound(numero) : fimCount = LBound(numero) : pTipo = - 1
if pOrder = 1 then iniCont = LBound(numero) : fimCount = UBound(numero) : pTipo =  1

'Atribuo o qtde de 1 para cada item do array
Dim total(100)
For cont = iniCont To fimCount step pTipo
  total(cont)=1
Next

'Aqui eu agrupo os numeros iguais e somo as quantidades
For contador=0 To 100
  For count=contador+1 To UBound(numero)
    IF numero(contador)<>"anulado" And numero(contador)=numero(count) Then
      Total(contador)=Total(contador)+1
      numero(count)="anulado"
      total(count)=0
    End IF
  Next
Next

Dim maior(100), qtde(100)

'o código abaixo coloca os números em ordem decrescente
'o primeiro for indica q nº vai ser comparado com os outros
'o segundo for indica qual é o maior nº
'no 3º for eu anulo o maior numero para ele não ser novamente identificado como maior.

For cont=0 To UBound(numero)
  maior(cont)=numero(0)
  For count=1 To UBound(numero)
    IF maior(cont)< numero(count) Then
      maior(cont)=numero(count)
    End IF
  Next

  For contador=0 To UBound(numero)
    IF maior(cont)=numero(contador) Then
      numero(contador)=0
      qtde(cont)=total(contador)
    End IF
  Next
Next

'Gerando o resultado que vai ser impresso
nConta = "1"
For cont = iniCont To fimCount step pTipo
  IF qtde(cont)<>0 And maior(cont)<>"0" Then
If nConta <> 1 Then sVirgula = ", "
    varResult = varResult & sVirgula & maior(cont)
  End IF
  nConta = nConta + 1
Next

ordena=varResult
End Function
%>

Para chamar a função:

<%
organizar=array("a","d","z","h","y")
Response.write ordena(organizar,tipo)
%>

Onde tipo:
0 - Crescente
1 - Decrescente

Abraços!

:D
' nome: gustavo veiga
' profissão: ALOG Data Centers do Brasil (analista de sistemas)
' publicidade: ALOG Data Centers do Brasil

#4 Jhonathas.net

Jhonathas.net

    12 Horas

  • Usuários
  • 181 posts
  • Sexo:Não informado

Posted 21/07/2004, 23:05

Ficou show tarkan :) mandaram bem., (y)
Não ajunteis tesouros na terra, onde a traça e a ferrugem tudo consomem e aonde os ladrões minam e roubam;
Mas ajuntai tesouros no céu, onde nem a traça nem a ferrugem consomem, e aonde os ladrões não minam nem roubam.
MT 6 . 19

Jhonathas da Silveira de Matos (UIN: 57422166 / MSN: jhon_asp)




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq