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;
}
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;
}