Pascal/Turbo Pascal - Ordenacion de cadenas

 
Vista:

Ordenacion de cadenas

Publicado por Maibok (9 intervenciones) el 20/11/2003 01:13:40
Buenas, estoy haciendo un programa en pascal y he llegado a un punto que me atoro, y la cuestión es que necesito ordenar cadenas de caracteres (o strings) que son nombres de tal manera que el máximo de las cadenas es 30 y si por ejemplo las cadenas son: Dado; dado; Arroz;arroz;
me las ordende de la siguiente manera:
Arroz
arroz
Dado
dado
es decir que me aparezcan de las iniciales correspondientes primero las que empiezan por A luego las que empiezan por a luego las de B, luego las de b..... y asi. No me valen algoritmos como el de la burbuja ya que primero me pone todas las que empiezan por mayusculas y luego todas las que empiezan por minusculas y las necesito intercaladas, he ahí mi problema, como puedo ordenarlas para que me quedan de esa manera que os he indicado???? Muchas gracias, saludosssssssss
Maibok!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ordenacion de cadenas

Publicado por Morito (176 intervenciones) el 20/11/2003 05:02:00
No sé realizarlo con palabras porque es más fácil con números, pero si no encuentras una forma de hacerlo lo otro sería la creación de una librería.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenacion de cadenas

Publicado por Diego Romero (786 intervenciones) el 20/11/2003 16:09:28
Tienes varias formas de hacer esto.
Una de ellas es crear dos vectores y separar en cada uno las palabras que comienzan en mayusculas y en el otro en minusculas, ordenar anbos vectores y luego refundir los dos en uno solo pero esto solo sirve para la primera letra, no para el resto. Si eso no te importa pues nada, ya tienes una posible solución.
Otra forma es más complicado y requerirá que asignes un ranking a cada letra, por ejemplo
A=1
a=2
B=3
b=4
etc...
luego convertir el string a vector de bytes reemplazando cada letra por su ranking, luego ordenar los vectores y volver a reemplazar el ranking por su letra correspondiente.
Existe una tercera forma pero no la he meditado bién, se trata de hacer aritmetica con el código ASCII de cada letra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar