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.
Código
#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) { 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; while (fila<5) { fila++; } }
Este codigo solo incluye la carga en la matriz...pero nose como ordenarlo.
Me dicen que tengo que ordenarlo basandome en este codigo
Código
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.