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.
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