Bonjour, alors on me demande d’écrire un programme permettant de saisir une chaîne puis d’effacer les caractères identiques dans cette chaine
par ex si ch=aaabbbaacca le résultat sera abc . alors j’ai écris mon programme et il m’a semblé logique mais en l’exécutant sur pascal m’affiche ‘‘an error has occurred in your application’’ puis il se bloque. voici ce que j’ai écrit:
uses wincrt;
var
ch:string;
i,j:integer;
begin
write('saisir ch ');
readln(ch);
for i:=1 to length(ch) do;
j:=i;
repeat
if ch[i]=ch[j] then delete(ch,j,1) ;
else j:=j+1;
until j=length(ch);
write(ch);
end.
Merci d’avance pour votre aide
PS: lorque je remplace for i:=1 to length(ch) do par son équivalent par le boucle repeat i:=0
repeat
i:=i+1
…
until i=length
et quand je remplace aussi until j=length(ch) par j>;length(ch) le programme marche comme il faut mais je ne comprend pas pourquoi . Quelqu’un pourrait m’éclaircir ? merci pour vos réponses !