Bonjour,
svp je cherche une solution pour un exercice qui affiche si une phrase est tous palindromes, c'est-à-dire tous les mots qui la composent sont des palindromes.
Version imprimable
Bonjour,
svp je cherche une solution pour un exercice qui affiche si une phrase est tous palindromes, c'est-à-dire tous les mots qui la composent sont des palindromes.
Bonjour,
Pour que l'on puisse t'aider, poste ce que tu as fait et explique ce qui te bloque.
;)
Bonjour ,
j’ai voulu réaliser ce programme mais je bloque au niveau du test de la chaine
Voici le code :
A bientôtCode:
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 ph; uses wincrt; var phrase,c:string; i,j:integer; test:boolean; function palindrom (mot:string):boolean; var ch1:string; begin ch1:=''; for i:=length(mot) downto 1 do ch1:=ch1+mot[i]; if ch1=mot then palindrom:= true else palindrom:=false; end; begin writeln('donner une phrase');readln(phrase); i:=1; repeat i:=i+1; if phrase[i]='' then c:=''; for j:=1 to i-1 do c:=c+phrase[j]; test:=palindrom(c); j:=i+1 ; until (test=false)or(i=length(phrase)); if test = false then writeln('cette phrase n''est pas palindrome') else writeln('cette phrase est palindrome'); end.
Il manque des initialisations dans le programme principal et il ne faut pas oublier le dernier tes lorsque la fin de la phrase est atteinte.
La boucle pourrait donner quelque chose comme ceci :
Attention à une erreur conceptuelle dans la fonction palindrom : tu y utilises la variable globale i ! Il faut toujours considérer une fonction comme un bloc autosuffisant, qui utilise les paramètres qui lui sont transmis et des variables locales. Ton code est d'ailleurs un bel exemple où la variable globale est modifiée dans la fonction, ce qui met la pagaille dans le traitement ultérieur dans le programme principal.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 i := 0; c := ''; test := true; repeat i := i + 1; if (phrase[i] = ' ') or (i > length(phrase)) then (* Coupure de mot détectée ou fin de phrase *) begin test := palindrom(c); c := ''; end else c := c + phrase[i]; until (test = false) or (i > length(phrase));
;)
Merci bien pour l'explication