Título: Contar y comparar palabras en lenguaje c
Publicado por: martha71404 en 20 Octubre 2015, 22:37 pm
Hola Buanas tardes intento hacer un programa en donde quiero que comprare las palabras y cuando este encuentre una palabra repetida la imprima y que le sume 1 y si encuentra otra que sea 2 etc..
ejemplo
hola hola mundo
respuesta
Palabras repetidas 2
solo quiero que me imprima el numero de veces que se repite cada palabra desde un archivo.txt
espero y me ayuden saludos...
Título: Re: Contar y comparar palabras en lenguaje c
Publicado por: engel lex en 21 Octubre 2015, 05:41 am
que llevas hecho? que no sabes?... el foro es para resolver dudas puntuales, di exactamente cuales son tus dudas y recuerda googlear de antemano
Título: Re: Contar y comparar palabras en lenguaje c
Publicado por: furciorifa en 22 Octubre 2015, 22:28 pm
Puedes usar la librería String.h, y usar strtok(); para separar las palabras de un texto y después almacenarlas en un arreglo que vaya checando la primer palabra con la siguiente con strcmp(); y si son iguales marca en el contador repetidas++, si no ignora en las comparaciones y después si repetidas==0 pones no hay palabras repetidas, listo ya te di el algoritmo básicamente.
Título: Re: Contar y comparar palabras en lenguaje c
Publicado por: martha71404 en 24 Octubre 2015, 02:12 am
y en codigo c como seria no se nada de programacion estoy aprendiedo :( ayudenme pls
Título: Re: Contar y comparar palabras en lenguaje c
Publicado por: do-while en 24 Octubre 2015, 08:21 am
No te preocupes, yo te ayudo, construye un árbol binario que almacene como campo clave una palabra en orden alfabético, y un segundo campo que controle las repeticiones.
¡Saludos!
PD: Si me he pasado con la ayuda lo siento, no era mi intención resolver el problema.
Título: Re: Contar y comparar palabras en lenguaje c
Publicado por: Gunhack en 25 Octubre 2015, 21:21 pm
Este es el código, solo le hace falta lo de cargar el archivo a la cadena pero eso te lo dejo a ti ;D #include <cstdio> #include <cstring> #include <ctype.h> using namespace std; int toLower(char *cadena); //Funcion que convierte toda la cadena a minúsculas y regresa el numero de palabras. int main() { //Se crea la variable cadena tu puedes modificar el programa para que se cargue la cadena desde el archivo. char cadena[] = {"Hola hola mundo, este programa cuenta cuantas palabras hay en esta cadena."}; char aux[strlen(cadena)]; //Variable auxiliar para mantener la cadena original. strcpy(aux, cadena); //Copiamos el contenido de la cadena original a la cadena auxiliar. int nPalabras = toLower(aux); // Variable que almacena el numero total de palabras en la cadena. char tokens[nPalabras][30]; //Variable que almacena cada palabra en un espacio del arreglo. char *token = strtok(aux, " ,.!?"); //Función que convierte una cadena a tokens. nPalabras = 0; while(token != NULL) { strcpy(tokens[nPalabras++], token); //Se almacena cada token (palabra) en un espacio del arreglo. token = strtok(NULL, " ,.-!?"); } int contPal[nPalabras]; //Variable que contiene el numero de repeticiones de cada palabra. int palRep = 0; //Variable auxiliar para ingresar al indice de "contPal". int suma = 0; for(int i = 0; i <nPalabras; i++) { contPal[i] = 0; } for(int i = 0; i < nPalabras - 1; i++) { //Ciclo que compara si una palabra es igual a otra en los tokens. for(int j = i+1; j < nPalabras ; j++) { if(strcmp(tokens[i], tokens[j]) == 0 && strcmp(tokens[i], "*") != 0){ strcpy(tokens[j],"*"); //Si una palabra es igual a otra dentro de la cadena cambia su valor a "*" para o ser tomada en cuenta la siguiente iteración. contPal[palRep]++; } } if(strcmp(tokens[i], "*") != 0) { //Se saca la suma de las palabras repetidas. suma += contPal[palRep]; palRep++; } } palRep = 0; printf("%s\n\n", cadena); printf("Las palabras repetidas son:\n\n"); for(int i = 0; i <nPalabras; i++) { // Muestra la palabra y su numero de repeticiones if(strcmp(tokens[i], "*") != 0 && contPal[palRep] != 0 ) { printf("%d) %s: %d Coincidencia(s).\n", palRep, tokens[i], contPal[palRep++]); } } printf("\nTotal de palabras repetidas: %d\n\n", suma); } int toLower(char *cadena) { int n = 0; for(int i = 0; i < strlen(cadena); i++) { cadena[i] = tolower(cadena[i]); if(cadena[i] == ' ') { n++; } } return n+1; }
Título: Re: Contar y comparar palabras en lenguaje c
Publicado por: martha71404 en 29 Octubre 2015, 02:36 am
y ese mismo codigo sirve para implementarlo en la herramienta de flex??
|