// // main.c // T3_Ej14 // // Created by Mari Paz Guerrero Lebrero on 28/1/15. // Copyright (c) 2015 Mari Paz Guerrero Lebrero. All rights reserved. // #include #include #include #include #define ELTOS 10 void GenerarCaracteres(char *cad); int** CuentaLetras(char *cad, int *n); int EstaEn(int *cad, char c, int n); int main() { char *cad; int **nletras, tam = 1, i; srand(time(NULL)); cad = (char*)malloc((ELTOS + 1) * sizeof(char)); GenerarCaracteres(cad); puts(cad); nletras = CuentaLetras(cad, &tam); for(i = 0; i < tam; i++) { printf("La letra %c se repite %d veces\n", nletras[0][i], nletras[1][i]); } return 0; } void GenerarCaracteres(char *cad) { int i, n, m; m = 65; //'A' en ascii n = 90; //'Z' en ascii for(i = 0; i < ELTOS; i++) { cad[i] = rand() % (n - m + 1) + m; } cad[i] = '\0'; } int** CuentaLetras(char *cad, int *n) { int **nl, i, pos; nl = (int**)malloc(2 * sizeof(int*)); nl[0] = (int*)calloc(*n, sizeof(int)); nl[1] = (int*)calloc(*n, sizeof(int)); for(i = 0; i < ELTOS; i++) { pos = EstaEn(nl[0], cad[i], *n); if(pos != -1) { nl[1][pos]++; } else { nl[0][*n - 1] = cad[i]; nl[1][*n - 1] = 1; nl[0] = (int*)realloc(nl[0], (*n + 1) * sizeof(int)); nl[1] = (int*)realloc(nl[1], (*n + 1) * sizeof(int)); (*n)++; } } return nl; } int EstaEn(int *cad, char c, int n) { int pos = -1, i = 0, encontrado = 0; while(i < n && encontrado == 0) { if(cad[i] == c) { pos = i; encontrado = 1; } i++; } return pos; }