Maestro_kanelo Forero

Registrado: 28 Oct 2005
Mensajes: 79
|
Publicado: Lun May 15, 2006 9:32 am Título del mensaje: Ordenar cadenas |
|
|
haber tengo que realizar un programa en ensamblador en el que le introduzca 20 cadenas por teclado y me las ordene tanto alfabeticamente como por longitud, la verdad consigo intercambiar 2 cadenas, ordenarlas, pero cuando son mas de 2 cadenas ya no se ke hacer, alguien sabe de algun sitio donde encontrar el codigo, alguna ayuda o algo???
Graciasssss |
|
DonDavid Moderador


Registrado: 22 Abr 2004
Mensajes: 1272
Ubicación: Madrid
|
Publicado: Lun May 15, 2006 9:53 am Título del mensaje: |
|
|
Lo que te falla es el algoritmo... yo el codigo en ensalblador no te lo puedo poner... tienes que usar los algoritmos de ordenacion como el de la burbuja (el mas sencillo, pero menos eficiente), el de seleccion o insercion directa, o si quieres algo mas profesional (en cuanto a eficiencia) busca el heapSort o el QuickSort.
Todo eso son algoritmos de ordenacion, lo unico que tienes que hacer es buscarlo el psudo codigo y pasarlo a ensamblador.
Toma el de la burbuja por ejemplo: (Este codigo esta en C):
| Código: |
void mostrarArreglo(const int[], int);
//La usamos para desplegar los elementos del arreglo.
void ordenarArreglo(int[], int);
//Es el algoritmo de ordenamiento por burbuja
void intercambiar(int&, int&);
//Esta función es llamada por la función anterior, y se encarga de intercambiar los pares de elementos cuando sea necesario. Notar que recibe referencias ya que necesita modificar los valores de sus argumentos.
Ejemplo:
//Ordena burbuja, ordenamiento
//de un arreglo metodo burbuja
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
void mostrarArreglo(const int[], int); //prototipo de funcion que recibe un arreglo constante
void ordenarArreglo(int[], int); //prototipo que modifica y ordena elarreglo
void intercambiar(int&, int&); //prototipo, intercambialos valores de dos elementos
int main()
{
const int tamano = 15;
int arreglo[tamano] = {25,17,13,16,41,32,12,115,95,84,54,63,78,21,10};
cout << "Arreglo antes de ordenarse: " <<endl;
mostrarArreglo(arreglo,tamano);
cout << "Arreglo despues de ordenarse: " <<endl;
ordenarArreglo(arreglo,tamano);
mostrarArreglo(arreglo,tamano);
cout << "Fin del programa :)" << endl;
return 0;
}//fin de main
void mostrarArreglo(const int arreglo[], int tamano)
{
for (int i = 0 ; i < tamano ; i++)
cout << "arreglo["<< i << "]=" << arreglo[i]<< endl;
}
void ordenarArreglo(int arreglo[], int tamano)
{
for (int i = 0; i<tamano-1 ; i++)
for (int j = 0; j<tamano-1 ; j++)
if(arreglo[j] < arreglo[j+1])
intercambiar(arreglo[j],arreglo[j+1]);
}
void intercambiar(int &a, int &b)
{
int tmp = b;
b = a;
a = tmp;
}
|
Y un enlace que explica el uso del quicksort, el mas eficiente:
http://www.conclase.net/c/orden/quicksort.html
A mi el que mas me gusta es el heapsort o del monticulo, por el uso de arboles y recursividad, pero no se suele encontrar demasiada informacion de el... lo mejor es buscar en un libro de programacion. Ademas de que estos dos ultimos... no se si te servirar.. o mereceran la pena para ordenar tan solo 20 cadenas. _________________ La mayor sabiduría que existe es conocerse a uno mismo.
Te conoces tu??
|
|