ahi va , se pueden repetir almenos una vez , no esta contemplado el caso de que si hay tres erres te quite una (por si acaso)....
he usado las mismas letras que antes, ajustalas a R C I , si te sobra una linea quitala. te marqué la linea con un comentario , nota que cambie AND por OR.
// -> !!!!!!!!!!!!!!!!!!!!!!!!!!!! desde aqui
________________________________________________________
uses crt;
var
cadena , resultado:String;
cad_tmp:string; // a¤adido
ultimo_car:char; // a¤adido
y:byte;
begin
clrscr;
y:=1;
cadena:=' erre que te errre la CCCC y la III cooolor cuuualquier otra cosa ';
ultimo_car:=#32;
cad_tmp:='';
for y:=1 to length(cadena) do
begin
// si no hay repeticion entonces
if (ultimo_car<>cadena[y]) then
// se a¤ade un caracter a la cadena temporal
cad_tmp:=cad_tmp+cadena[y]
else
// -> !!!!!!!!!!!!!!!!!!!!!!!!!!!! desde aqui
// hay repeticion ,incluir solo si no son los caracteres c y a r
if
(cadena[y] = 'c' ) or
(cadena[y] = 'y' ) or
(cadena[y] = 'a' ) or
(cadena[y] = 'r' ) then cad_tmp:=cad_tmp+cadena[y];
ultimo_car:=cadena[y];
end;
resultado:=cad_tmp;
writeln(cadena);
writeln(resultado);
// cOOOlor no ha sido modificado pues 'o' no pertenece "c","y","a","r"
readln;
END.