En este artículo analizaremos un ejercicio de programación en lenguaje C sobre cómo ordenar un arreglo de varios renglones en forma alfabética. Esto es algo muy utilizado en una gran cantidad de programas, por ejemplo, en una base de datos con nombres guardados, ya que en ocasiones se nos solicita ordenarlos alfabéticamente.
strcmp: Función que sirve para comparar dos cadenas de caracteres, si las cadenas son iguales te devolverá un “0”, si la primer cadena es menor que la segunda devolverá un número negativo y finalmente si la primer cadena es mayor que la segunda devolverá un numero positivo. Si deseas saber más sobre esta función puedes visitar este artículo: Comparación de cadenas con función STRCMP.
Realizar un programa en el que solicitemos ingresar 5 nombres de máximo 10 caracteres, una vez ingresados este debe ordenarlos alfabéticamente. Ya que sea procesada esta información, deberá mostrarlos de manera ordenada.
Código:
/* Ordenación en Arreglos - Por Solución Ingenieril*/ #include <stdio.h> /* Declaración librerías*/ #include <stdlib.h> #include <string.h> int main(){ int ciclo_A,ciclo_B; //Ciclos que ayudaran a ordenar el arreglo char nombre[5][10]; //Arreglo que guardara los nombres char aux[20]; //Vector auxiliar que guardara nombres temporalmente //Ciclo en el que solicitamos los nombres a ingresar for(ciclo_A=0;ciclo_A<5;ciclo_A++){ printf("Ingresa un nombre: "); scanf("%s",&nombre[ciclo_A]); } for(ciclo_A=1;ciclo_A<6;ciclo_A++) //Ciclo que se repetirá 5 veces para ordenar cada nombre for(ciclo_B=0;ciclo_B<5-ciclo_A;ciclo_B++) //Ciclo que ordenara un nombre, se va restando pues en cada vuelta queda ordenado el ultimo nombre if(strcmp(nombre[ciclo_B],nombre[ciclo_B+1])>0) //Si el nombre actual es mayor al siguiente nombre... { strcpy(aux,nombre[ciclo_B]); //Guardamos el nombre actual en Aux strcpy(nombre[ciclo_B],nombre[ciclo_B+1]); //Pasamos el nombre siguiente al actual strcpy(nombre[ciclo_B+1],aux); //Pasamos el Aux al siguiente } printf("\n \n---- NOMBRES ORDENADOS ---- \n"); //Mostramos los nombres ordenados for(ciclo_A=0;ciclo_A<5;ciclo_A++){ printf("%s \n",nombre[ciclo_A]); } return 0; } |
---|
En este ejercicio analizamos como utilizar la función “strcmp” para ordenar un arreglo en forma alfabética, además, mostramos como sería la representación gráfica de este programa, pudiendo así analizar el manejo de arreglos y ciclos anidados en un diagrama de flujo. Este tipo de programas es muy útiles a la hora de manejar bases de datos, en donde queremos ordenar alfabéticamente, por ejemplo, los nombres ingresados.
Genial, gracias
Hola y gracias por el foro. Quisiera saber como hacer lo mismo pero con la segunda letra de la palabra. Pude ordenar la estructura que necesitaba pero me quedaron desordenadas las segundas letras. Sé que se puede hacer con otro ciclo for pero no se como comparar con strcmp las segundas letras de las palabras.