Anagramme pascal
locachica
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, je suis débutante en programmation pascal(je ne connais que boucle for,while,repeat ss oubier les structures simples et conditionnelles). voilà on me demande d'entrez 2 chaînes et de vérifier si le mot1 est anagramme du mot2 ou pas. voilà le programme que j'ai fait et je ne comprends pas le pb. merci de me corriger ou encore me proposer autre solution mais qui sera facile à comprendre :p
program anagramme;
uses wincrt;
var ch,s:string;
z,i,x,y,a,b:integer;
ana,result:boolean;
begin
repeat readln(ch) until length(ch)>0;
repeat readln(s) until length(s)>0;
x:=length(ch);
y:=length(s);
ana:=false;
i:=0;
repeat
i:=i+1;
a:=pos(ch[i],s);
b:=pos(s[i],ch);
if (x=y) and (a in [1..x]) and (b in [1..y]) then ana:=true;
until(ana);
write(ana);
end.
program anagramme;
uses wincrt;
var ch,s:string;
z,i,x,y,a,b:integer;
ana,result:boolean;
begin
repeat readln(ch) until length(ch)>0;
repeat readln(s) until length(s)>0;
x:=length(ch);
y:=length(s);
ana:=false;
i:=0;
repeat
i:=i+1;
a:=pos(ch[i],s);
b:=pos(s[i],ch);
if (x=y) and (a in [1..x]) and (b in [1..y]) then ana:=true;
until(ana);
write(ana);
end.
A voir également:
- Le protocole assure que la communication entre l'ordinateur de pascal et le serveur de visiodoct est car les informations seront avant d'être envoyées.
- Ordinateur lent que faire - Guide
- Ordinateur - Guide
- Turbo pascal - Télécharger - Édition & Programmation
- Clavier de l'ordinateur - Guide
- Réinitialiser ordinateur - Guide
1 réponse
Ton idée de départ (avec les pos) est vraiment bonnes, mais la boucle repeat until est maladroite car tu connais le nombre d'opérations (égale à la taille de tes mots) donc il est plus intéressant d'utiliser une boucle for...
Sur le même principe que toi :
Sur le même principe que toi :
program locachicha; function sontAnagrammes(s1,s2:string):boolean; var i,j:integer; begin if length(s1)<>length(s2) then exit(false); for i:=1 to length(s1) do begin j:=pos(s1[i],s2); if j>0 then s2[j]:='_' // on "supprime" la lettre else exit(false); end; exit(true); end; var s1,s2:string; begin while true do begin write('s1 : '); readln(s1); write('s2 : '); readln(s2); writeln(sontAnagrammes(s1,s2)); writeln; end; end.