Pascal/Turbo Pascal - Contar Palabras

 
Vista:

Contar Palabras

Publicado por AprendizInformatico (7 intervenciones) el 07/03/2009 23:40:41
Hola a todos.
Toy haciendo un programa el cual debe de hacer lo siguiente, contar las palabras y los separadores son los espacios en blancos.
Haciendo el programa por separado me salio y no me dio ningun problema pero al implemetarlo en otro programa me da problemas.
Pongo la parte de codigo interesado en el fallo:

program practica3;

var
opcion:integer;
fin:boolean;
num:integer;


procedure CuentaPalabras;
var
ch:char;
cont:integer;
begin
cont:=0;
writeln('Introduzca la frase deseada: ');
while not eoln do
begin
read(ch);
while (ch=' ') and (not eoln) do
read(ch);
if ch<>' ' then
begin
cont:=cont+1;
while (not eoln) and (ch<>' ') do
read(ch);
end;{fin if}
end;{fin while}

writeln('El numero de palabras introducidas es: ',cont);
end;

function menu:integer;
var
opc:integer;
begin
writeln('1.Contar Palabras');
writeln('2.Distancia entre digitos');
writeln('3.Contoneo de elementos');
writeln('4.Salir');
repeat
writeln('Introduzca la opcion deseada: ');
read(opc);
until (opc>=1) and (opc<=6);
menu:=opc;

end;

begin {programa principal}
fin:=false;
repeat
opcion:=menu;
case opcion of
1: CuentaPalabras;

{ 2:
3: }
4: fin:=true;
end;
until fin;

end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Contar Palabras

Publicado por Miguel (159 intervenciones) el 08/03/2009 01:38:07
Yo lo compile y me encontre con que no te permite introducir el texto, no se si era ese tu problema, estaria bueno que nos digas que es lo que intentas hacer y como. Por que veo que intentas leer caracter por caracter, y para ese caso si bien no es adecuado estas usando READ es decir tenes que escribir un caracter y darle "enter, usando READKEY no hace falta y lo puedes asignar a la variable ch, es decir ch:=READKEY;.
Ahora, no te permite introducir el texto por que tienes un error en el ciclo WHILE, para ingresar a ese ciclo no tiene que ser falso el valor de eoln, y siempre va a ser verdadero, por eso no ingresa.
Me parece que tienes que mejorar tu idea sobre el tramiento en este caso de texto, por ahi la forma en la que quieres tratarlo no es la adecuada.
Muchas veces tuve que hacer programas similares, es mas un proyecto fue sobre tratamiento de cadena. Te recomiendo que pienses en utilizar una cadena, en pascal esta es un arreglo de caracteres. Por ejemplo, si en una cadena ingresaste la palabra "Pepe", si tu escribes WRITE(cad[3]); (suponiendo que cad es una variable del tipo cadena), vas a visualizar por pantalla la letra "p". Si sabes tratar arreglos no vas a tener problemas.
Primero lee la cadena (la unica restricción es que solo puedes ingresar 256 caracteres) y luego comienza el tratamiento sobre esa cadena.
Espero que te sirva de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Contar Palabras

Publicado por Miguel (159 intervenciones) el 08/03/2009 02:16:26
Fe de erratas. Donde dice "para ingresar a ese ciclo no tiene que ser falso el valor de eoln", en realidad debe decir "para ingresar a ese ciclo tiene que ser falso el valor de eoln"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Contar Palabras (Solucion)

Publicado por AprendizInformatico (7 intervenciones) el 08/03/2009 22:37:08
Solucionado el tema.

en la function menu estaba escrito:

writeln('Introduzca la opcion deseada: ');
read(opc);

y habia que escribir:

writeln('Introduzca la opcion deseada: ');
readln(opc);

Ya que cuando se llama al procedimiento el while leia final de linea y no entraba en el.

Gracias por leerlo y las contestaciones que me habeis dado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Contar Palabras (Solucion)

Publicado por Miguel (159 intervenciones) el 08/03/2009 22:52:24
Me alegro que hayas encontrado el error y que lo hayas hecho como vos querias, por ahi no es lo mas adecuado pero siempre es bueno hacerlo solo y como uno queria hacerlo, despues con la practica vas a ver que es lo que te comviene o no, pero segui asi.
Ayer te agregue al msn, por si necesitabas algo, cualquier cosa que necesites ahi estoy.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Contar Palabras

Publicado por joanna (1 intervención) el 02/10/2009 03:01:06
Terminación de palabra
Para indicar la condición de que las palabras a contar terminen con una letra dada se incluye una línea de la forma

Fx
donde x es la letra con la cuál la palabra debe terminar.

tengo una tarea para programacion y me pide q haga esto como una de las condiciones....(lo q se encuentra arriba) no se como especificarle al programa y a la persona q lo "valla a utilizar" q: Fx = terminacion de palabra con "x"
y a su ves no se como hacer para q el programa utulice este dato de entrada...

quisiera saber si puedo hacer algo de este estilo ej...
' x favor ingrese la ultima letra de la palabra a ser contada:'
y q la persona ingrese el dato
luego pedir otro dato...y q la persona ingrese el dato...asi sucesivamente hasta q cupla todas las condiciones a pedir....

y luego decirle al programa q lea los datos de entrada con los nombres correspondientes...ej 1er dato a leer seria "Fx"
y asi sucesivamente nombraria al resto de los datos...quiero saber si esto se puede hacer¿? y como debo declarar a Fx y a todo el resto de las entradas...si como const o variables ¿?

disculpen si no entienden mucho...agradesco si me pueden ayudar les mando saludos lo mejor! y espero su respuesta gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar