[Pascal] Palindrome
Résolu/Fermé
nadal1991
Messages postés
268
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
2 octobre 2011
-
20 août 2008 à 11:00
Uly410 Messages postés 319 Date d'inscription mercredi 14 janvier 2015 Statut Membre Dernière intervention 2 février 2015 - 14 janv. 2015 à 19:29
Uly410 Messages postés 319 Date d'inscription mercredi 14 janvier 2015 Statut Membre Dernière intervention 2 février 2015 - 14 janv. 2015 à 19:29
A voir également:
- Palindrome pascal
- Turbo pascal download - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev-pascal - Télécharger - Édition & Programmation
- Palindrome[pascal] - Forum Pascal
- Nombre palindrome - Forum Python
10 réponses
alfnet
Messages postés
2
Date d'inscription
mercredi 20 août 2008
Statut
Membre
Dernière intervention
27 septembre 2008
20 août 2008 à 22:19
20 août 2008 à 22:19
Salut,
Tu peux aussi faire le test par récusivité:
Voilà, j'espère que ça t'aidera.
A.
Tu peux aussi faire le test par récusivité:
program Palindrome; VAR s:string; FUNCTION palyn (s: string):boolean; BEGIN IF (length(s) = 1) THEN palyn := TRUE ELSE IF s[1]=s[length(s)] THEN palyn := palyn (COPY(s,2,length(s)-2)) ELSE palyn := FALSE; END; begin WRITE ('Entrez une chaine de caractere(s): '); READLN (s); IF palyn(s) THEN WRITE ('Cette chaine est un palindrome.') ELSE WRITE ('Cette chaine n''est pas un palindrome.'); READLN (); end.
Voilà, j'espère que ça t'aidera.
A.
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
20 août 2008 à 11:21
20 août 2008 à 11:21
Salut,
Dans ta boucle for, il faut attendre la fin des comparaisons de lettres avant d'afficher quoi que ce soit. Exemple:
nambn ==>
il compare le 1er caractère (n) et le dernier (n) et il affiche est un palindrome
il compare par la suite le 2ème (a) et le 4ème (b) et il affiche n'est pas un palindrome
Manifestement, ce n'est pas ce que tu cherches.
Initialise donc une variable booléenne avant la boucle for (genre estPalindrome, valeur à true);
Tu va m'excuser les erreurs de syntaxe (ça fait un siècle depuis que j'ai touché la dernière fois à Pascal).
++
Dans ta boucle for, il faut attendre la fin des comparaisons de lettres avant d'afficher quoi que ce soit. Exemple:
nambn ==>
il compare le 1er caractère (n) et le dernier (n) et il affiche est un palindrome
il compare par la suite le 2ème (a) et le 4ème (b) et il affiche n'est pas un palindrome
Manifestement, ce n'est pas ce que tu cherches.
Initialise donc une variable booléenne avant la boucle for (genre estPalindrome, valeur à true);
program palindrome(output); uses crt ; var nom : string ; i, m :integer, estPalindrome:boolean ; begin clrscr ; writeln('ceci est un programme qui determine si le nom entré est un palindrome ou non ') ; readln(nom); m:=length(nom); estPalindrome := true; for i:=1 to m div 2 begin if nom[i] != nom[m+1-i] begin estPalindrome := false; break; end; end; if estPalindrome begin writeln(' ',nom,' est un palindrome' ); end else begin writeln(' ',nom,' n'est pas un palindrome' ); end; readln end.
Tu va m'excuser les erreurs de syntaxe (ça fait un siècle depuis que j'ai touché la dernière fois à Pascal).
++
ftiercel
Messages postés
119
Date d'inscription
dimanche 24 septembre 2006
Statut
Membre
Dernière intervention
8 février 2014
61
20 août 2008 à 11:43
20 août 2008 à 11:43
Pour chercher du code sur internet, je te conseille Google Search Code ( http://www.google.com/codesearch ). C'est Google mais pour les développeurs, très utile. Il te suffit de commencer ta recherche par "lang:pascal " pour qu'il ne cherche que du code en langage Pascal.
ftiercel
Messages postés
119
Date d'inscription
dimanche 24 septembre 2006
Statut
Membre
Dernière intervention
8 février 2014
61
20 août 2008 à 11:13
20 août 2008 à 11:13
Non seulement il écrit plusieurs fois le message mais en plus, le message peut être faux. Par exemple, pour un terme comme "abcdefdcba", il va écrire plusieurs vrai alors que c'est faux.
Chaque boucle de l'instruction for est une itération. A chaque itération tu compares deux lettres. Tu ne peux pas dire si c'est vrai ou pas après avoir comparé que deux lettres. Il faut que le message ne s'affiche qu'après avoir comparé toutes les lettres, autrement dit, après la boucle for.
Tu as besoin de rajouter un booléen dans ton programme. Il doit être initialisé à vrai (i.e. tant qu'on a pas trouvé d'erreur, le mot est supposé être un palindrome). Ensuite, à chaque itération, le booléen reste vrai si les deux lettres comparées sont les mêmes, sinon, il passe à faux. Tu afficheras un message ou l'autre selon si le booléen est resté à vrai ou pas.
Chaque boucle de l'instruction for est une itération. A chaque itération tu compares deux lettres. Tu ne peux pas dire si c'est vrai ou pas après avoir comparé que deux lettres. Il faut que le message ne s'affiche qu'après avoir comparé toutes les lettres, autrement dit, après la boucle for.
Tu as besoin de rajouter un booléen dans ton programme. Il doit être initialisé à vrai (i.e. tant qu'on a pas trouvé d'erreur, le mot est supposé être un palindrome). Ensuite, à chaque itération, le booléen reste vrai si les deux lettres comparées sont les mêmes, sinon, il passe à faux. Tu afficheras un message ou l'autre selon si le booléen est resté à vrai ou pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
nadal1991
Messages postés
268
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
2 octobre 2011
11
20 août 2008 à 20:53
20 août 2008 à 20:53
ok je verrai , ca m'aidera certainement
merci a vous tous
merci a vous tous
nadal1991
Messages postés
268
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
2 octobre 2011
11
20 août 2008 à 11:36
20 août 2008 à 11:36
ok j'ai pas penser , desoler mais je debute en programation ,et je voudrait juste en aprendre un peu pour le debut de la premiere anner
en tous cas merci beaucoup
en tous cas merci beaucoup
cpapacheikh
Messages postés
9
Date d'inscription
mardi 15 juillet 2008
Statut
Membre
Dernière intervention
22 mai 2009
20 août 2008 à 21:03
20 août 2008 à 21:03
Fodra remarké ke ta mis le message ',nom,' est un palindrome' à l'intérieur de la boucle for. De ce fait puisque la boucle est parcourue NBRE DE LETTRES MODULO DEUX fois, c'est à dire si ta un mot de 50 lettres tora 24 fois le message inscrit. je te propose d'utiliser une boucle WHILE.
salut voila la solution ;)
program palindrome;
uses wincrt ;
var ch : string ; i:integer;v:boolean;
begin
writeln('ceci est un programme qui determine si le nom entré est un palindrome ou non ') ;
readln(ch);
clrscr;
for i:=1 to length(ch) div 2 do
begin
if ch[i] = ch[length(ch)+1-i] then
v:=true
else
v:=false;
end;
if (v=true) then
writeln(ch,' est palaindrome')
else
writeln(ch, ' n''est pas palaindrome');
readln
end.
Utilisateur anonyme
18 déc. 2014 à 16:38
18 déc. 2014 à 16:38
program palindrome;
uses wincrt;
var
l,i,x:integer;
ch:string;
begin
writeln('donner une chaine');
readln(ch);
l:=length(ch);
for i:=1 to l do
x:=0;
begin
if ord(ch[i])=ord(ch[l-i+1]) then
x:=1;
end;
if x=1 then
writeln(' palindrome')
else writeln('n ''est pas palindrome');
end.
**************by sadek******************
uses wincrt;
var
l,i,x:integer;
ch:string;
begin
writeln('donner une chaine');
readln(ch);
l:=length(ch);
for i:=1 to l do
x:=0;
begin
if ord(ch[i])=ord(ch[l-i+1]) then
x:=1;
end;
if x=1 then
writeln(' palindrome')
else writeln('n ''est pas palindrome');
end.
**************by sadek******************
Modifié par Uly410 le 14/01/2015 à 19:37
Je ne sais pas si le programme est juste mais la forme est brillante ! Je suis ébloui. Je vois là que j'ai à faire à un connaisseur costaud.
Au fait alfnet, comment et avec quel OS vous tester vos programmes écrits en TP ?
Bravo !
Uly