Autor
|
Tema: un contador de palabras (Leído 3,853 veces)
|
g.izmo
Desconectado
Mensajes: 6
|
Tengo que hacer un contador de palabras, (Mi nivel de programacion es bastante basico), y nos pide: Contar palabras (Solo mayusculas, y sin acentos) meter uno o mas espacios sin que cuenten y cuando se presione enter te diga cuantas palabras hay. en caso de meter caracter invalido, pide una frase de nuevo sin importar la anterior Me podrian dar alguna idea, lo agradeceria mucho
|
|
« Última modificación: 13 Octubre 2017, 20:01 pm por g.izmo »
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Empiza por lo básico. ¿Cómo distingues tú una palabra de otra? meter uno o mas espacios sin que cuenten Puedes ignorar esto de momento. Hazlo como si solo pudiera haber 1 espacio entre palabras. Ve avanzando.
|
|
|
En línea
|
|
|
|
g.izmo
Desconectado
Mensajes: 6
|
He pensado que si tengo dos caracteres como variables. Si hago que obligatoriamente empiece por espacio, puedo hacer que cada vez que la segunda variable sea una letra cuente como palabra, si es espacio nada, y si es caracter no valido te lo pida de nuevo.
Cada vez que se introduzca un nuevo caracter, será b, y a será la b anterior (anvanzan de uno en uno).
Podría tener dos comtadores, uno de palabras y otro, que en caso de haber introducido más de cero caracteres no validos te pida la ntroduccion de una nueva frase.
¿Que opciones tengo paraa repetir todo el proceso de nuevo si hay un caracter no valido en la frase?
Gracias por adelantado
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Ve por partes. El algoritmo que comentas está bien. Impleméntalo. Lo de caracteres inválidos lo puedes comprobar antes de empezar ese otro algoritmo.
Cuando tengas algo funcional podrás mazlcar ambos algoritmos en uno, pero de momento, es mejor que implementes lo primero.
|
|
|
En línea
|
|
|
|
g.izmo
Desconectado
Mensajes: 6
|
Si tengo dos variables 'a''b' puedo irlas escaneando por momentos y que 'a'(el nuevo caracter) introducido se escanee, y pase a ser 'b' cuando se introduzca otro caracter.
Lo que se me ocurre es:
puts("Introduzca frase valida:"); // Si no dejamos espacio, se pondra al declarar b como tal. ordinal_b=32; ordinal_a=getche(); printf("%c",b);
while(ordinal_a!=13) ordinal_b=ordinal_a; ordinal_a=getche(); if (ordinal_b=32 && ordinal_a!=32) {palabras=palabras+1;} if(ordinal_a=13) {printf("Se han escrito: %d palabras", palabras);}
Lo que no se es si esta estructura mantendra la composicion de variables b,a mientras se escaneen todas las teclas pulsadas. si tienes aguna sugerencia me ayudarias muchisimo
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Tengo varias. En todas las comparaciones pusiste "=" en vez de "==". Luego, trata de no usar directamente números para los caracteres. Pon un caracter entre comillas simples, que es lo mismo que poner su valor. El 32 lo cambiarías por ' ', y el 13 por '\r'.
Y, lo dicho, prueba el código, mira lo que hace, etc.
|
|
|
En línea
|
|
|
|
g.izmo
Desconectado
Mensajes: 6
|
#include<stdio.h> #include<conio.h>
main() { int palabras=0; int error=1; char a; char b;
while(error!=0) //Cuando se produzca un error se repetira el proceso. Como hemos declarado el error a 1, se iniciara. { error=0; // Devolvemos el valor 0 al error para que vuelva a contar errores puts("Introduzca frase valida:"); b==' '; printf("%c",b); // Comenzamos con un espacio scanf("%c%c",&a,&b); //Se escanea el primer espacio que hemos introducido y la primera tecla que pulsemos while (a!='\r') // Mientras no se pulse intro se continuan escaneando caracteres { b==a; //Entonces b pasa a ser la a a=getche(); // Y a escanea y muestra la tecla if (b==' '&&a!=' ') {palabras=palabras+1;} // Si hay un espacio y un caracter juntos (b,a) } if(a=='\r') {printf("\nSe han escrito: %d palabras", palabras);break;} // El intro nos muestra el numero de palabras } getch(); }
El programa comienza bien ("Introduzca frase valida:") el espacio que pedimos al principio y lo que escribamos....
Pero no cuenta palabras, siempre muestra que hay 0 y cuando pulsamos enter hay que pulsarlo dos veces para que muestre las palabras(ssiempre 0)
|
|
|
En línea
|
|
|
|
|
|