[ Foro de Pascal ]

Invertir solo las vocales de una cadena

02-May-2019 18:11
Invitado (UnEstudianteMas)
2 Respuestas

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.


02-May-2019 18:44
Nacho Cabanes (+40)

Ok. ¿Qué has conseguido hasta ahora?


04-May-2019 04:11
Invitado (UnEstudianteMas)

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] :(






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...