Pascal/Turbo Pascal - Problema Con Pascal

 
Vista:

Problema Con Pascal

Publicado por Programmer Zero (1 intervención) el 28/09/2011 05:10:36
Buenas... Estoy Haciendo Un Programa En pascal que lea una cadena de caracteres (con espacios) del teclado e imprima todas aquellas palabras que tienen mas de 3 vocales entre lineas separadas.

pero solo me funciona con palabras de "4" vocales y si las escribo entre espacios,

Por Ejemplo pongo:

AEIO aeio aei.....Y funciona, pero si intercalo la que no cumple la condicion:
AEIO aei aeio... Imprime la primera y "aei" la cual no deberia imprimirse, sino mas bien la "aeio"
Y no funciona bien con palabras de mas de 4 vocales...

program palabras;
uses crt;

{PROGRAMA PARA ESCRIBIR CADENAS DE MAS DE TRES VOCALES
CON ESPACIOS ENTRE LINEAS}

var palabra: string;

procedure separar (cadena: string);

var i, j, cont, aux, temp: integer;
salida: string;

begin

Salida := '';
cont := 0;
aux := 1;
for i:=1 to Length(cadena) do
if (cadena[i]=#65) or (cadena[i]=#69) or (cadena[i]=#73) or (cadena[i]=#79)
or (cadena[i]=#85) or (cadena[i]=#97) or (cadena[i]=#101) or (cadena[i]=#105)
or (cadena[i]=#111) or (cadena[i]=#117) then
begin
cont := cont + 1;
if cont > 3 then
begin
for j := aux to Length(cadena) do
begin
if (cadena[j] <> #32) then
begin
salida[j] := cadena[j];
write(salida[j]);
end
else
begin
temp := 0;
aux := j + 1;
break;
end;
end;
end;
if (temp = 0) then
begin
cont := 0;
Salida := '';
writeln;
writeln;
temp := 1;
end;
end;
end;

begin

clrscr;
write('Ingrese Una Cadena De Caracteres: ');
readln(palabra);
writeln;
separar(palabra);
readkey;
end.


Gracias De Antemano...
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

Problema Con Pascal

Publicado por ramon (2158 intervenciones) el 08/10/2011 13:49:39
{Espero esto te sirva}

program clastext;
uses
crt;

var
cont : integer;
resul, dato : string;


procedure entrada(var dato : string);
begin
gotoxy(1,4);write('Entre Testo separado por espacio : ');
gotoxy(36,4); readln(dato);
end;

procedure presenta(d : string);
var
i : integer;
begin
gotoxy(1,4);clreol;
writeln(dato);
cont := 1;
i := 1;
fillchar(resul,256,' ');
resul[0] := chr(255);
repeat
if dato[cont] in['A','E','I','O','U','a','e','i','o','u'] then
begin
resul[i] := dato[cont];
resul[0] := chr(i);
i := i + 1;
end;
if dato[cont] = ' ' then
begin
if i - 1 > 3 then
writeln(resul);
fillchar(resul,256,' ');
resul[0] := chr(255);
i := 1;
end;
cont := cont + 1;
until cont > length(dato);
if i - 1 > 3 then
writeln(resul);
end;



begin
clrscr;
fillchar(dato,256,' ');
dato[0] := chr(255);
entrada(dato);
presenta(dato);
readln;
end.
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