No es el algoritmo mas eficiente, pero es eficaz
Código Delphi
[-]
function Reducir(Str: string; C: Char): String;
begin
while Pos(C+C, Str) > 0 do
Str:= StringReplace(Str,C+C,C,[rfReplaceAll]);
Result:= Str;
end;
var
Vocales: String;
i: integer;
Str: String;
begin
Vocales:= 'aeiouAEIOU';
Str:= 'Arribaa en la mooontaña se divisabaa una llama que reecorría su traayectoo';
for i:= 1 to length(Vocales) do
Str:= Reducir(Str,Vocales[i]);
ShowMessage(Str);
end;