Código: C++ #include <stdio.h>#include <string.h> void ordenar(int n,char cad[50][30]);void printa (int n,char cad[50][30]); int main(){ int n=0; char cad[50][30]; puts("Introdueix cadenas(. para terminar):n"); do { printf("Cadena %d: ", n+1); gets(cad[n]); fflush(stdin); }while((0!=strcmp(cad[n++],".")) || (n>50)); //ESTA CONDICION ESTA MAL CREO n--; //elimino la ultima cadena ordenar(n,cad); printa(n,cad); getchar();getchar();}void ordenar(int n,char cad[50][30]){ char *temp[30],i,elem; /* depura esta parte del codigo seguila paso a paso y fijate el contenido de lo que te marco */ for(elem=0; elem<n-1; elem++){ for(i=elem+1; i<n; i++){ if(strcmp(cad[elem],cad[i])>0) /*evalua el contenido de esta condicion */ { *temp=*cad[elem]; /*fijate el contenido*/ *cad[elem]=*cad[i]; /*fijate el contenido*/ *cad[i]=*temp; /*fijate el contenido*/ } } }}void printa (int n,char cad[50][30]){ int i; printf("nLes cadenes ordenades alfabeticament son:n"); for(i=0; i<n; i++){ printf("nCadena %d: %s", i+1, cad[i]); } } Pq me intercambio la primera letra de las palabras y no la palabra entera ?