Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
PREGUNTA 3 FICHERO
#include <string.h> #define NULA -1 typedef unsigned long long ULL; typedef long long LL; typedef struct { char palabra[41]; ULL frecuencia; ULL longitud; ULL frelong; }tipoPalabra; unsigned short verificar(char *cadena) { while ( *cadena != '\0' ) { if ( !isalpha(*cadena) ) return 0; cadena ++; } return 1; } void strUpper(char *cadena) { while ( *cadena != '\0' ) { if ( islower(*cadena) ) *cadena = toupper(*cadena); cadena ++; } } int posicion(tipoPalabra *listaPalabras,char *cadena, ULL N) { unsigned short i; for ( i = 0 ; i < N ; i ++) { if ( strcmp(listaPalabras[i].palabra, cadena) == 0 )return i; } return NULA; } int comparar(const void *pivot, const void *element) { tipoPalabra *ptrPivot = (tipoPalabra *) pivot; tipoPalabra *ptrElement = (tipoPalabra *) element; return (ptrPivot -> frelong) - (ptrElement -> frelong); } /* void output(tipoPalabra *listaPalabras, ULL N) { //LL i,j; ULL largo = listaPalabras[N-1].frelong; printf("%lli\n", largo); for ( i = 0 ; i < N ; i ++ ) { largo = (largo - listaPalabras[i].frelong); for ( j = 0 ; j < largo ; j ++ ) printf(" "); for( j = 0 ; j < 3 ; j ++) printf("%s", listaPalabras[i].palabra); printf("\n"); } }*/ void nubeDePalabras(FILE *entrada) { char cadena[41]; int pst; // 'pst': variable que representará la posición en donde se encuentra la palabra. tipoPalabra *listaPalabras = NULL; unsigned short N = 0; unsigned short i; // Iteración la para la lectura de cada cadena del archivo. while ( fscanf(entrada, "%s", cadena) != EOF ) { // Verificar si los caracteres de la cadena son todos alfabéticos if ( verificar(cadena) ) { // Transformar la cadena a mayúscula. strUpper(cadena); // Verificar si la cadena se encuentra almacenada en el vector. pst = posicion(listaPalabras, cadena, N); if ( pst == NULA ) { // Redimensionar el vector 'listaPalabras' listaPalabras = (tipoPalabra *) realloc( listaPalabras, sizeof(tipoPalabra *) * ( N + 1 ) ); // Verificar si hay o no espacio en la memoria. if ( listaPalabras == NULL ) exit(EXIT_FAILURE); // Se copia la palabra en la lista y se inicializa la frecuencia en 1. strcpy(listaPalabras[N].palabra, cadena); listaPalabras[N].frecuencia = 1; //listaPalabras[N].longitud = strlen(listaPalabras[N].palabra); N ++; } else listaPalabras[pst].frecuencia++; } } for ( i = 0 ; i < N ; i ++ ) { listaPalabras[i].longitud = strlen(listaPalabras[i].palabra); //listaPalabras[i].frelong = listaPalabras[i].longitud * listaPalabras[i].frecuencia; } //qsort(listaPalabras, N, sizeof(tipoPalabra), comparar); for ( i = 0 ; i < N ; i ++ ) printf("%s : %llu : %llu\n", listaPalabras[i].palabra, listaPalabras[i].frecuencia, listaPalabras[i].longitud ); //output(listaPalabras, N); /* for ( i = 0 ; i < N ; i ++ ) printf("%s : %llu : %llu : %llu\n", listaPalabras[i].palabra, listaPalabras[i].frecuencia, listaPalabras[i].longitud, listaPalabras[i].frelong );*/ }
run
|
edit
|
history
|
help
0
A_141117_Euclides
123
MatrixMul_shortxshort
B_141121_factorial02
lab5
Undefined behavior
Pointer Example
macaddress
20171127_ARRAY_ValorMayor
est