Problema de Burbujeo en una Matriz!

Iniciado por palacio29, 26 Agosto 2016, 03:43 AM

0 Miembros y 1 Visitante están viendo este tema.

palacio29

Hola

Tengo el siguiente problema. Necesito cargar nombres en una matriz y ordenar esa lista basandome en la primera letra. El nombre que tenga la primera letra mas cercana a la "A" iria primero y el mas cercano a la "Z" ultimo.

El codigo que hice hasta ahora es el siguiente.

#include <stdio.h>
#include <stdlib.h>
void IMPRIMIR(char arreglo[5][20]);
void ORDENAR(char arreglo[5][20]);
int main()
{
    char arreglo1[5][20];                ///ARREGLO DONDE GUARDO NOMBRES

    char letra='4';
    int bandera=0;
    int fila=0,columnachar=0;


    while ((arreglo1[fila][0]!='\0' || bandera==0)&& fila<5)
    {
        printf ("\nIngrese el nombre :  ");

        while (letra!='\r')
        {
            letra=getche();
            if (letra!='\r')
            {
                arreglo1[fila][columnachar]=letra;
                columnachar++;
            }
            if (letra=='\r')
            {
                if (columnachar==0)
                {
                    bandera=1;
                }
                if (bandera==0)
                {

                arreglo1[fila][columnachar]='\0';
                fila++;
                columnachar=0;
                }

            }

        }
        letra='4';


    }
    IMPRIMIR(arreglo1);


    return 0;
}


void IMPRIMIR(char arreglo1[5][20])
{
int fila=0,columna=0;

printf ("\n");
    while (fila<5)
    {
        printf ("%s\n",arreglo1[fila]);
        fila++;
    }
}





Este codigo solo incluye la carga en la matriz...pero nose como ordenarlo.
Me dicen que tengo que ordenarlo basandome en este codigo

void ordenar(int a[], int longitud)
{
int i, j, aux;
for (i = 0; i < longitud; i++)
{
for (j = i + 1; j < longitud; j++)
{
if (a[j] < a[i])
{
aux = a[i]; a[i] =
a[j]; a[j] = aux;
}
}
}
}


El problema es que intento hacerlo pero no me sale...La tanda de ejercicios incluye que lo ordenemos basandonos en la primera letra, y luego en todas las letras;..

Teoricamente tendria que comparar a cada posicion con la de la otra fila y si es mayor, crear un auxiliar, guardarlo y luego cambiarlos de lugar y asi para cada uno, lo he intentado pero no hay caso.

AlbertoBSD

El codigo que muestras es para ordenar enteros haybque modificarlo para comprar Cadenas podrias ordenarlos usando strcmp.

Te recomiendo que leas primero de algoritmos de ordenamiento.

Burbuja
QuickSort
etc

Y veas primero como ordenarlos en Papel para luego escribie el codigo correcto
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW