• Viernes 8 de Noviembre de 2024, 13:49

Autor Tema:  Suprimir Vocales Repetidas De Una Cadena  (Leído 3118 veces)

Deiv

  • Miembro activo
  • **
  • Mensajes: 67
  • Nacionalidad: bo
    • Ver Perfil
Suprimir Vocales Repetidas De Una Cadena
« en: Viernes 12 de Enero de 2007, 15:27 »
0
Hola,
¿Cuál sería la Función para quitar vocales repetidas (unidas) de una cadena de manera que se convierta en una sola?
Por ejemplo:

'Arribaa en la mooontaña se divisabaa una llama que reecorría su traayectoo'

El resultado deberá ser

'Arriba en la montaña se divisaba una llama que recorría su trayecto'

En realidad las consonantes no deben afectarse, solo las vocales repetidas (seguidas).

Pregunto a manera de practicar y saber como aplicarlo para el objetivo que tengo. Ya sé que por ejemplo si se quita a "Coordinado" se vería mal como "Cordinado", pero como dije otro es el objetivo, y me bastará con vuestras orientaciones de las vocales para darme cuenta.
Un Saludo

Saiyan1

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
    • http://www.anaprog.com.ar
Re: Suprimir Vocales Repetidas De Una Cadena
« Respuesta #1 en: Miércoles 17 de Enero de 2007, 11:39 »
0
Como empezarias el ejercicio?
----------------------
Gustavo Insaurralde
Foro de Analista Programador

Deiv

  • Miembro activo
  • **
  • Mensajes: 67
  • Nacionalidad: bo
    • Ver Perfil
Re: Suprimir Vocales Repetidas De Una Cadena
« Respuesta #2 en: Miércoles 17 de Enero de 2007, 13:50 »
0
Haber Yo pensaba utilizar la funcion Copy por ejemplo de manera que vaya comparando la cadena si en una cierta posición esta "x-vocal" comparar con la posición[i-1] si tiene el mismo contenido, y ahí no sé quizá con la procedure Delete ir quitando esos repetidos.

_.B._

  • Miembro activo
  • **
  • Mensajes: 88
    • Ver Perfil
Re: Suprimir Vocales Repetidas De Una Cadena
« Respuesta #3 en: Miércoles 17 de Enero de 2007, 15:27 »
0
Mi primer impulso?

Crear una nueva variable (en caso de archivos, un nuevo archivo), y añadirle, caracter a caracter, todo caracter que no sea una vocal repetida.

Algo como:

Código: Text
  1. original: string;
  2. copia: string;
  3. ...
  4. copia[1] := original[1];
  5. tam := 1;
  6. cont := 2;
  7. mientras cont <= tamaño de original hacer
  8.     si original[cont] es vocal Y si original[cont] = copia[cont - 1]
  9.         continuar con ciclo;
  10.     si no
  11.         copia[tam] := original[cont];
  12.         inc(tam);
  13.     inc(cont);
  14. ...
  15.  

Espero te sirva :comp:
¡Olmo, dame peras!
www.BernardoLG.net

Vila1989

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Suprimir Vocales Repetidas De Una Cadena
« Respuesta #4 en: Viernes 27 de Abril de 2007, 22:38 »
0
Hola amigo. Aunque este problema fue planteado en enero, fue ayer cuando me inscribí en este sitio, así que anoche mismo escribí esta funcioncita en Turbo Pascal (que lo mismo sirve para Delphi). Quizás ya hayas resuelto el problema, pero como un problema puede tener múltiples soluciones, pues esta te servirá de seguro. Procuré optimizarla al máximo.

function EliminaRepeticiones(s:string):string;
var
   i:integer;
begin
   i:=2;
   while i<=length(s) do
      if (s in ['a','e','i','o','u']) and
         (s=s[i-1]) then
         delete(s,i,1)
      else
         inc(i);
   EliminaRepeticiones:=s;
end;


La función recibe como parámetro de entrada la cadena con las repeticiones y la devuelve ya sin ellas. Un ejemplo de programa principal que la use es el sgte:

var
   t:string;
begin
   write('Teclee cadena: ');
   readln(t);
   writeln;
   writeln(EliminaRepeticiones(t));
   readln;
end.


Espero te sea útil.