Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mkboy

Maior valor do ARRAY

Recommended Posts

Tenho um loop, que responde registros da tabela produtosCada registro tem um campo que é a dataEntao quero colocar todas as datas que vierem em um arrayEntao fiz assim:arrayData = varPf & "," & arrayDataOnde varPf é a dataSendo assim, se eu fizer um response.write arrayData o resultado que eu tenho é:ARRAY: 4,7,45,10,Neste caso eu preciso pegar o maior valor, que no caso é o 45Como eu faço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse caso, creio eu, que você precisa fazer um for, passando por todas as posições do vetor, testando qual é o maior;um algoritmo simples de ordenação resolveria seu caso;pois, acho que nao existe uma função que te dê o maior valor do vetor, pois ubound mostra a ultima posição só;

Compartilhar este post


Link para o post
Compartilhar em outros sites

huhu

 

tó pra você brincar:

<%a = "0,5,10,20,6,40,8"b = split(a,",")v = 0for i = 0 to ubound(b)    if cint(b(i)) > cint(v) then        v = b(i)    end ifnextresponse.write "maior valor: " &v%>
tava à toa aki, entao fiz esse codigo pra você

hehe

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem você pode montar um RecordSet Desconectado e mandar Ordenar ou até mesmo Filtrar para encontrar o maior valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que dahora, os ninjas ativos no findisemana, hehe!

 

Apliquei o codigo, e:

 

Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A000D)

Tipo incompatível: 'Cint'

Se eu tiro o Cint e le funciona mas me responde 7 e minha maior ocorrencia é 45

 

Ah, como eu tiro a ultima virgula sobrando no meu array!!!

 

Veja como meu codigo ta:

 

ASP

[*]Arraydata = 4,7,45,10,

 

[*]

 

[*] a = Arraydata

 

[*] b split(a,",")

 

[*] 

 

[*]

 

[*] v = 0

 

[*] for i = 0 to ubound( B )

 

[*]

 

[*]

 

[*]

 

[*]

 

[*]  if b(i) > v then

 

[*]  v b(i)

 

[*]  end if

 

[*] next

 

[*]

 

[*] response.write "maior valor: " &v

 

http://forum.imasters.com.br/public/style_emoticons/default/bye1.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

ASP

[*]<%

 

[*]Arraydata "4,7,45,10"

 

[*]a = Arraydata

 

[*] b split(a,",")

 

[*] v = 0

 

[*] for i = 0 to Ubound( B )

 

[*]  if Int(b(i)) > v then

 

[*]  v b(i) + 0

 

[*]  end if

 

[*]  next

 

[*] Texto "maior valor: "

 

[*] response.write Ucase(Texto) & Cint(v)

 

[*]%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ASP
  1. Arraydata "4,7,45,10,"
     
  2. = Arraydata
     
  3. split(a,",")
     
  4. = 0
     
  5. for i = 0 to ubound( B )
     
  6. IF b(i) <> "" AND IsNumeric(b(i)) TRUE THEN
     
  7. If CINT(b(i)) > v then
     
  8. b(i)
     
  9. end if
     
  10. END IF
     
  11. next
     
  12. response.write "maior valor: " &v

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salgado o seu Script Anlisando está certo mais ele naum retornara o Valor Maior!

 

Testei aqui e ele Retorna sempre o Primeiro valor da String que seria 4.

Por isso que coloquei esta Linha!

 

ASP

[*]v = (i) + 0 ' Pq ele pegara o maior Valor e Somara com 0, Qualquer valor somado por 0 é seu proprio Valor!

 

Explore

Compartilhar este post


Link para o post
Compartilhar em outros sites

MKBOY !!BrotherEu testei o script aqui, antes de mandar pra vocêaté, pq, eu tava à toa, e por isso, montei na hora, testei, funcionou beleza.. e eu postei pra vocêda uma olhada no conteudo das variaveis que você tá chamando no meio do codigo que eu postei;pode ser que ele nao seja um numero, e por isso da pau no CINTSe você pegar akele codigo, jogar numa pagina vazia, vai ver que funfa;entao.. reveja o conteudo de suas variaveis aeabração

Compartilhar este post


Link para o post
Compartilhar em outros sites

MKBOY !!

 

Brother

 

Eu testei o script aqui, antes de mandar pra você

 

até, pq, eu tava à toa, e por isso, montei na hora, testei, funcionou beleza.. e eu postei pra você

 

da uma olhada no conteudo das variaveis que você tá chamando no meio do codigo que eu postei;

pode ser que ele nao seja um numero, e por isso da pau no CINT

 

Se você pegar akele codigo, jogar numa pagina vazia, vai ver que funfa;

 

entao.. reveja o conteudo de suas variaveis ae

 

abração

<{POST_SNAPBACK}>

Estranho! Eu testei aqui e deu o erro que Mkboy falo!

Eu fiz um esquema e funfo...como postei acima!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, com a do Dark to Tio Salgado, do explorer, sempre o mesmo erro!Voltado a primeira, se fizer isso:

a = "0,5,10,20,6,40,8"b = split(a,",")v = 0for i = 0 to ubound( B)   if cint(b(i)) > cint(v) then      v = b(i)  end ifnextresponse.write "maior valor: " &v

Agora se eu coloco no a o meu array ele da erro!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, é o seguinte : se o seu array estiver assim: "2,3,4,5,6," Com o ultimo sendo virgula, as posicoes do array no split ficarão assim:|2|3|4|5|5| | ... pois o virgula é o que separa o array (comando split..)e se tem uma virgula no final, ele interpreta com se após essa virgula viesse mais algum dado que será colocado no array!!Ou você faz um for i = 0 to ubound(array) - 1, ou dentro do loop você verifica se a posição é vazia...ou então tira a ultima virgula...

Compartilhar este post


Link para o post
Compartilhar em outros sites

alfaleop.. beleza?é o que eu quiz dizer ali..provavelmente algum valor do array tah piradaum.. por isso da o erro doido;O ideal, é.. antes de chamar a função, mostrar na tela o conteudo inteiro do array;.assim, tem como ver o que tem dentro dele;E tb.. quem sabe, usar um TRIM nele.. pois pode ser que tenha espaço em branco perdido no meio do troço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No código que coloquei eu só fiz o teste se o valor no Array era numérico e não vazio, não alterei nada mais que já haviam postado.

Segue como função:

ASP
  1. <%Arraydata "4,7,45,10,98,55,"
     
  2. Function MaiorValor(ValoresSeparadosPorVirgula)
     
  3. If InStr(ValoresSeparadosPorVirgula,",") > 0 Then
     
  4. Matriz split(ValoresSeparadosPorVirgula,",")
     
  5. MaiorValor = 0
     
  6. for i = 0 to ubound(Matriz)
     
  7. IF Matriz(i) <> "" AND IsNumeric(Matriz(i)) TRUE THEN
     
  8. If CDbl(Matriz(i)) > CDbl(MaiorValor) then
     
  9. MaiorValor Matriz(i)
     
  10. end if
     
  11. END IF
     
  12. next
     
  13. Else
     
  14. MaiorValor "Dados Incompativeis"
     
  15. End If
     
  16. End Function
     
  17. response.write "maior valor: "MaiorValor(ArrayData)%>

Testada e funcionando perfeitamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

aki funfou beleza

 

dim vDados, i, maiorvDados = "100, 3, 10, 500, 2"vDados = Split(vDados, ", ")maior = 0for i= LBound(vDados) to UBound(vDados)  if Cint(vDados(i)) > Cint(maior) then    maior = vDados(i)  end ifnextResponse.Write "Maior Número: " & maior

 

Flworas

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehe

 

o problema, era exatamente com a virgula a mais no final;

 

eu e o mkboy resolvemos no icq;

 

só mandei ele adicionar isso:

ASP

[*]<%

 

[*]a "7,30,14,7,"

 

[*]c InstrRev(a, ",", -1, 1)

 

[*]b Left(a,c-1)

 

[*]

 

[*]response.write b

 

[*]%>

assim, elimina a virgula do final ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não tiver a virgula você elimina um numero na matriz. Faz como eu fiz ali, testa, pq assim até mesmo se passar algo vazio no meio não rola erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

com certeza, uma função que verifica os possíveis erros, é bem melhor do que qualquer gambi que seja feita.. sem sombra de duvidas ;]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.