ola gente un saludo pues en mi insti me estan dando duro con eso de programacion y me tope con un buen problema con un programa para contar palabras osea el problema pirincipal es la manera de contra palabra por espacios pero sin que estos se cuenten osea que no importa cuantos espacios tabuladores o saltos de carro el programa lea solo las palabras existentes
les dejo mi codigo para que medigan haber como puedo hacer esto
// practica 4 si.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "windows.h" #include <iostream> #include "stdlib.h" #include "stdio.h" #include "conio.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { char x, letra; int cont=0, cont1=1, opcion; FILE *punt; do { printf("Que opcion desea:\n 1.Contador de letras\n 2.contador de palabras\n 3.Salir\n"); scanf("%i",&opcion); system("cls"); switch(opcion) { case 1: punt=fopen("C:\\si.txt","r+"); if(punt==NULL) cout<<"El archivo no se encuentra\n"; else cout<<"Introduzca la letra a buscar\n"; cin>>letra; while(!feof(punt)) { x=fgetc(punt); if(x==letra) { cont++; } } cout<<"Este texto contiene: "<<cont<<" letras "<<letra<<"\n"; fclose(punt); system ("pause"); system ("cls"); break; case 2: punt=fopen("C:\\si.txt","r+"); if(punt==NULL) cout<<"El archivo no se encuentra\n"; else cout<<"Espere...\n"; while(!feof(punt)) { x=fgetc(punt); if(x==' ') { cont1++; } } cout<<"Este texto contiene: "<<cont1<<" palabtras\n"; fclose(punt); system ("pause"); system ("cls"); break; case 3: return 0; break; default: printf("Su opcion no es valida vuelaa intentarlo\n"); printf("\n"); }; } while(opcion!=4); system("pause"); return 0; }
Gracias de antemano
En C++ es mucho más simple que eso.
Ya has dado con una solución, así que probablemente te de igual, pero si usas fstream es muy sencillo contar palabras. Una propuesta de algoritmo, en unas 6 o 7 líneas de codigo:
Básicamente lee de palabra en palabra, e incrementa el contador por cada una. Se supone que ya has abierto un fichero en el objeto fi. Te pongo un código de ejemplo, que he hecho en 2 minutos deprisa y corriendo, solo para asegurarme de que funciona bien. El programa lee el nombre de fichero que le pasas como parámetro, cuenta las palabras y se lo dice al usuario:
Si lo necesitas, puedes adaptar el "algoritmo" a tu código, no te será difícil, aunque no creo que ya te sea muy útil.
Saludos!
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Lo tienes casi todo hecho
En este fragmento de código (contar palabras). Pon este bucle dentro:
De esa forma, el programa saltará automáticamente a la siguiente palabra aunque haya 500 espacios en blanco de por medio.
Mi creacciónes particulares:
http://www.scenebeta.com/noticia/la-serpiente
http://www.scenebeta.com/node/22535
Gracias Bro!!!
Como quedo el code ya finalmente pero mas "pro"
Pero ahora salio otro problema....
Pero la cuestion es que cuando el archivo no tiene nada me cuenta 1 palabra