Procedure CuentaPalabras(Var Oracion: String);
Var I : Integer;
Begin
For I := 2 to Length(Oracion) do
If Oracion[I] = ' ' then Palabras := Palabras + 1;
End;
Begin
ClrScr;
Palabras := 1;
WriteLn('Intruduzca una oracion');
ReadLn(Cadena);
CuentaPalabras(Cadena);
Writeln('Cantidad de palabras = ',Palabras);
ReadKey
end.
function Palabras(Oración: string): integer;
var
Result: integer;
begin
Result:=0;
Oracion:=trim(Oracion);
if Length(Oracion) > 0 then
if Length(Oracion) > 1 then
begin
for i:=1 to Length(Oracion)-1 do
if (Oracion[i] = ' ') and (Oracion[i+1] <> ' ') then
inc(Result);
end
else Result:=1
Palabras:=Result;
end;
begin
oración:='esto es una oracion';
WriteLn('La oración "',oracion,'" tiene ',Palabras(oracion),' palabras.');
end.
Cierto, lo escribí "de memoria". ¿Trim() no existe en turbo pascal?, habría jurado que sí :P. Bueno, trim() sería una función que quita los caracteres no imprimibles por delante y por detrás de un string incluyendo los espacios en blanco. Es para evitar las cadenas que no tienen palabras (por ejemplo, que el usuario presione la barra espaciadora y luego enter).
Valora esta respuesta
0
Comentar
RE:Contar Palabras
Publicado por juani (1 intervención) el 07/05/2009 21:58:17
ups es re tarde jeje pero bueno...
el programa asi no anda bien, si yo tengo la siguiente oracion:
"_ _ _ _ _ hola " donde '_' son espacios , el programa que escribiste me cuenta 5 palabras y solo hay una.