[ Foro de Pascal ]
Hola soy estudiante de programación con Pascal, y deseo hacer un programa que al introducir una oración/frase/enunciado sin signos de puntuación y que termine en punto, me imprima una cadena modificada donde las palabras terminadas en vocal estén invertidas.
Ejemplo:
enunciado: Este es un ejemplo.
Resultado: etsE es un olpmeje.
Ok. ¿Qué has conseguido hasta ahora?
program prueba;
uses
crt;
var
c1:String[255];c2,c3,c4:string[255];
esp:string;
i:Integer;
Begin
WriteLn('Escribe una frase con palabras separadas sin signos de puntuacion y que termine en "."');
Read(c1);
esp:=(' ');
for i:=1 to Length(c1) do
begin
c2:=(c1[i]+c2);
end;
for i:=1 to Length(c2) do
begin
if (c2[i]=#32) or (c2[i]=#46) then
begin
if ((pos(c2[i],c2)+1)='a') or ((pos(c2[i],c2)+1)='e') or ((pos(c2[i],c2)+1)='i') or ((pos(c2[i],c2)+1)='o') or ((pos(c2[i],c2)+1)='u') then
begin
for (pos(c2[i],c2)+1) to ' ' do
begin
c3:=((' '[pos(c2[i],c2)+1])+c3);
end;
else
if (pos(c2[i],c2)+1)<>'a' or (pos(c2[i],c2)+1)<>'e' or (pos(c2[i],c2)+1)<>'i' or (pos(c2[i],c2)+1)<>'o' or (pos(c2[i],c2)+1)<>'u' then
begin
for (pos(c2[i],c2)+1) to ' ' do
begin
c3:=(c3+' '[pos(c2[i],c2)+1]);
end;
end;
end;
end;
end;
for i:=1 to length(c3) do
begin
c4:=(c3[i]+c4);
end;
writeln(c1);
writeln(c2);
writeln(c3);
writeln(c4);
readKey()
end.
He hecho como 3-5 códigos pero en los primeros tuve errores tratando de validar el carácter después del espacio entonces, pensé en usar pos del espacio y sumarle 1 a esa posición pero me da error el pos ya que no acepta el c2[i] :(
Disculpa el retraso en contestar.
Para que sea fácil de leer y no te cueste localizar los errores, yo optaría por crear alguna función auxiliar, como "esVocal", "extraerSiguientePalabra" e "invertirPalabra".
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)