Foros del Web » Programando para Internet » ASP Clásico »

Ordenar de mayor a menor

Estas en el tema de Ordenar de mayor a menor en el foro de ASP Clásico en Foros del Web. Hola: tengo un problemilla a la hora de ordenar un vector, tengo dos vectores uno numérico y otro de palabras(string), estos dos vectores están relacionados ...
  #1 (permalink)  
Antiguo 16/03/2006, 06:13
 
Fecha de Ingreso: enero-2006
Ubicación: Madrid
Mensajes: 148
Antigüedad: 19 años, 3 meses
Puntos: 0
Ordenar de mayor a menor

Hola:
tengo un problemilla a la hora de ordenar un vector, tengo dos vectores uno numérico y otro de palabras(string), estos dos vectores están relacionados entre si de manera que la palabra de la posicion i ha saldio tantas veces como ponga en el vector numérico en la misma posicion i, es decir:
palabra(0)-ha salido veces(0)
palabra(1)-ha salido veces(1)
palabra(2)-ha salido veces(2)
el problema que tengo es que no se como hacer para que me ordene el numero de veces que sala cada palabra(es decir, ordenar el vector numérico no es un problema pues es sencillo), de manera que luego pueda mostrar de mayor a menor el numero de veces que sale cada palabra. El programa que he hecho es este, pero no se porque a veces me sale alguna palabra duplicada sin realemente estarlo, si no me explicado suficientemente bien diganmelo y lo volveré a explicar para hacerme en tendre.
El vector de palabras(string) es el llamado todas_palabras, y el numero de veces que sale es cont_veces
Código:
function palPrinc (todas_palabras, cont_veces)
	dim indice_palabras_princ()	'Almaceno en este vector los índices dentro de cont_veces donde se encuentran las 5 palabras que mas aparecen
	dim vector()
	
	for i=1 to ubound(cont_veces)
		redim preserve vector(i)
		vector(i) = cont_veces(i)
	next
	k=1
	For i =1  To UBound(cont_veces)
		MaxVal = cont_veces(i)
		MaxIndex = i

		For j = i To ubound(cont_veces)
			If cont_veces(j) > MaxVal Then
				MaxVal = cont_veces(j)
				MaxIndex = j
			End If
		Next
   		aux=cont_veces(i)
		cont_veces(i)=cont_veces(MaxIndex)
		cont_veces(MaxIndex)=aux
		redim preserve indice_palabras_princ(i)
		indice_palabras_princ(i)=MaxIndex
	Next 
	for j=1 to ubound(indice_palabras_princ)
		Response.Write(todas_palabras(indice_palabras_princ(j))&"-"&vector(indice_palabras_princ(j))&"<br>")
	next
	i=1
end function
Muchas gracias ciao.
  #2 (permalink)  
Antiguo 16/03/2006, 06:20
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 20 años
Puntos: 2
Hace mucho que no toco ASP, asi que no se si se pueden usar vectores asociativos. En caso afirmativo, creo que esa seria una buena solucion.

En vez de tener dos vectores por separado, unificalos. Ponlo los datos en un vector asociativo en el que la "clave" sea la palabra, y su contenido el numero de veces que se haya repetido. Asi, a la hora de ordenar por el numero de repeticiones, ya va todo junto, jeje.

1Saludo. Oskar.
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #3 (permalink)  
Antiguo 16/03/2006, 06:22
 
Fecha de Ingreso: enero-2006
Ubicación: Madrid
Mensajes: 148
Antigüedad: 19 años, 3 meses
Puntos: 0
y como se utilizan esos vectores asociativos?
  #4 (permalink)  
Antiguo 16/03/2006, 09:39
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Bueno, una posible solución sería un arreglo más que cuando el numérico tomara su posición correcta, guardaras la posición origen (estaba en 0, pero su orden debe ser 3), entonces en arr(3) = 0, así no tienes que ordenar el de las palabras necesariamente, aunque la verdadera recomendación, es que dependiendo de tu fuente de datos, mejor crees una matriz y no dos vectores, quizás incluso podrías utilizar el directorio de datos de ASP, que almacena un par valor (id, nombre) en tu caso.

Saludos.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 16/03/2006, 09:54
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
¿directorio de datos o diccionario de datos?

set objDict = createObject("Scripting.Dictionary")
  #6 (permalink)  
Antiguo 16/03/2006, 10:04
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
je je jej e, es que casi es viernes!!! bueno, se entendió no?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 17/03/2006, 02:52
 
Fecha de Ingreso: enero-2006
Ubicación: Madrid
Mensajes: 148
Antigüedad: 19 años, 3 meses
Puntos: 0
Vale, entonces creo una matriz con (id, nombre) y luego la ordeno por nombre, eso es lo que dices?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:50.