Título: Necesito ayuda para terminar mi programa Publicado por: bmillar en 4 Agosto 2018, 22:00 pm hola amigos, tengo que realizar el ordenamiento alfabetico de diferentes maneras,ascendente, descendente, por su largo y con mayusculas.
la estructura general la tengo, lo que no puedo lograr es realizar los ordenamientos llamandalos desde sub rutinas. les dejo el programa para que lo analicen #include<stdio.h> char nombres[30][30]; /* compara dos strings caracter por caracter. Implementación manual de strcmp */ int strcmp_arry(char *src1, char *src2){ //espera dos punteros a char y compara caracter a caracter. int i=0; while((src1!='\0') || (src2!='\0')){ if(src1 > src2) return 1; if(src1 < src2) return -1; i++; } return 0; } void ordenaAlfabetico(int n) { int i,j,aux; char nombres[30][30]; // es una prueba esta parte for(i=0;i<n;i++){ for(j=0;j<n-1;j++){ comp = strcmp( nombres[j], nombres[j+1] ); if(comp > 0){ strcpy(aux,nombres[j]); strcpy(nombres[j],nombres[j+1]); strcpy(nombres[j+1],aux); } } } } void ordenaAlfabetico2(int n){ } void ordenaAlfabeticoR(int n){ } void ordenaLargo(int n){ } void despliegaListado(int n){ int i; for(i=0;i<n;i++){ printf("Sujeto [%d] : %s",i, nombres); } } int main( ){ /* Puedes añadir tus propias variables si las requieres */ int n,i,j,opcion=1; /* Ingreso de nombres */ printf("Ingrese el tamaño del listado:"); scanf("%d",&n); printf("Ingrese los nombres a la lista :\n"); for(i=0;i<n;i++){ printf("Sujeto [%d] : ",i); scanf("%s",nombres); } while (opcion>0){ printf("1) Ordena los nombres alfabeticamente\n"); printf("2) Ordena los nombres AlFaBeTiCaMeNTe\n"); printf("3) Ordena los nombres alfabeticamente por su última letra\n"); printf("4) Ordena los nombres por longitud\n"); printf("0) Terminar\n"); printf("Opcion : "); scanf("%d",opcion); if(opcion==1){ ordenaAlfabetico(n); } else if(opcion==2){ ordenaAlfabetico2(n); } else if(opcion==3){ ordenaAlfabeticoR(n); } else if(opcion==4){ ordenaLargo(n); } /* despliegua el listado de nombres para mostrar el resultado */ despliegaListado(n); } return 0; } |