Título: Ayuda con ejercicio en C. Publicado por: HellDom89x en 23 Noviembre 2017, 08:45 am Hola.
Mi programa debe reordenar una cadena de texto leída desde un archivo con base en una palabra que ingresa el usuario y que se ordena alfabéticamente. Por ejemplo: HOLA Texto: VENCER EL TEMOR AL FRACASO Nc = 4 *número de caracteres de la palabra dada. HOLA VENC EREL TEMO RALF RACA SOXX Y tiene que terminar así: AHLO CVNE LE ER OTME FR LA ARCA XSXO El código es este: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> main() { FILE *B; char *A; char **D; char PC[16], Ord[16], N[90], archivo[50]; int Nc, Nct, Nf, i, j, w, x, y; char z; printf("Dame una palabra de 15 caracteres o menos:\n"); scanf("%s",PC); Nc=strlen(PC); printf("Indica el nombre del archivo escribiendo la extension\n"); scanf("\n%s",&archivo); B=fopen(archivo,"r+t"); if((B=fopen(archivo,"r+t"))==NULL) { printf("\nError"); } else { printf("\nArchivo valido\n"); while ((fscanf(B,"%s",&N))!=EOF) { printf("\n%s\n",N); } } Nct=strlen(N); Nf=Nct/Nc; printf("\nNumero de caracteres en texto: %d",Nct); printf("\nNumero de columnas: %d , Numero de filas: %d",Nc,Nf); strcpy(Ord,PC); for(i=1;i<Nc;i++) { for(j=0;j<Nc-i;j++) { if((tolower(Ord[j]))>(tolower(Ord[j+1]))) { z=Ord[j]; Ord[j]=Ord[j+1]; Ord[j+1]=z; } } } printf("\nTu palabra es: %s\n",PC); printf("Tu palabra ordenada es: %s\n",Ord); strupr(PC); for(i=0;i<Nc;i++) { printf(" %c ",PC); } puts("\n"); for(i=0; i<Nc; i++) { printf(" %c ",N); } puts("\n"); for(i=Nc; i<Nc+Nc; i++) { printf(" %c ",N); } A=&N[90]; A=(char*)malloc(Nf*Nc*sizeof(char)); for(i=0;i<Nf;i++) { for(j=0;j=Nc;j++) { A[w]=(i*Nc)+j; } } D=(char**)malloc(Nf*sizeof(char*)); for(i=0;i=Nf;i++) { D=(char*)malloc(Nc*sizeof(char)); } for(i=0;i<Nf;i++) { for(j=0;j<Nc;j++); { printf("%s",A); } } for(i=0;i=Nf;i++) { free(D); } getchar(); getchar(); } El problema es que, al crear el arreglo dinámico para cadenas, no lo lee y el programa deja de funcionar. Tampoco lee la matriz de caracteres. |