Bonjour à tous,

Mon problème est le suivant:

je dois réaliser une fonction booléenne qui indique si deux mots sont des anagrammes.

Voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
program Exercice5;
function Anagramme(const s1:string;var s2:string):boolean;
var i,c:integer;
 
begin
 
	i:=1;
	result:=(s2=' ');
	if length(s1)=length(s2) then
		begin
			while(i<length(s1)+1) and not result do
				begin
					c:=pos(s1[i],s2);
					if (c<>0) then
					begin
						delete(s2,c,1);
						writeln(s2);
						inc(i);
					end;
				end;
 
		end;
end;
 
var ch1,ch2:string;
 
begin // PROGRAMME PRINCIPAL
 
	writeln('Veuillez entrer 1 mots: ');
	readln(ch1);
	writeln('Veuillez entrer un 2e mot: ');
	readln(ch2);
	writeln(Anagramme(ch1,ch2));
end.

Donc l'idée est de regarder d'abord le caractère d'indice i dans le string 1 avec sa place dans le string 2 puis dans la boucle l'effacer du string 2.
Le problème c'est que la console me renvoie comme réponse FALSE....


Merci de me lire.

Merci pour l'explication des balises