Je veux créer un algorithme qui permet de tester l'égalité de deux tableaux d'entier :
fonction testEgaliteTableaux(t1,t2: Tab) : booleen
Var
i : entier
Début
res <-- vrai
i <-- 1
tant que res et (i < N) faire
si t1[i] <> t2[i] alors
res <-- faux
sinon
i <-- i+1
finsi
testEgaliteTableaux <-- res
fin fonction
maintenant je veux refaire le même travail en utilisant les pointeurs , qui peut m'aider SVP.
Bonjour ! Je pense qu'on peut faire quelque chose d'équivalent en utilisant deux pointeurs, mettons p1 et p2, qu'on initialise en les faisant pointer le début de chaque tableau : p1 <-- &(t1[1]) et p2 <-- &(t2[1]) (du moins si les tableaux commencent à 1).
Ensuite, pour comparer les éléments, on fait la même boucle que ci-dessus, mais en comparant les valeurs pointées, c'est-à-dire *p1 et *p2, et en incrémentant les pointeurs avant de reboucler : p1 <-- p1 + 1, p2 <-- p2 + 1.
Il manque un fin tant que, ou alors testEgalite <-- res est mal indenté
On peut faire un peu plus simple
fonction testEgaliteTableaux(t1,t2: Tab) : booleen
Var
i : entier
Début
i <-- 1
tant que (i < N) et (t1[i] = t2[i]) faire
i <-- i+1
fin tant que
testEgaliteTableaux <-- (i = N)
fin fonction
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
Algorithme testEgaliteTableaux
Types
Tab = Tableau [1..100] de Entier
Pointeur = ^Entier
Var
T1, T2 : Tab
p1, p2 : Pointeur
res : booléen
N :enitier
Début
res <-- vrai
p1 <-- &T1[1]
p2 <-- &T2[1]
tant que res et (p1 < T1+N) et (p2 < T2+N) faire
si p1^ <> p2^ alors
res <-- faux
sinon
p1 <-- p1 + 1
p2 <-- p2 + 1
finsi
FinTantque
fin
Il y a une erreur dans le 1er algorithme: le test d'arrêt ligne 7 est faux. Si les tableaux comportent N positions, et si on considère (ce que montre l'algorithme) que le premier élément d'un tableau est T[1], alors il faut tester i<=N, pas i<N
- Edité par edgarjacobs 20 février 2017 à 14:59:58
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Algorithme testEgaliteTableaux
Types
Tab = Tableau [1..N] de Entier
Pointeur = ^Entier
Var
T1, T2 : Tab
p1, p2 : Pointeur
N :entier
Début
p1 <-- &T1[1]
p2 <-- &T2[1]
tant que (p1^ = p2^) et (p1 < T1+N) et (p2 < T2+N) faire
p1 <-- p1 + 1
p2 <-- p2 + 1
fin tant que
testEgaliteTableaux <-- (p1^ = p2^)
fin
Remarque que j'ai modifié le type de Tab car sinon il me semble qu'il faudrait tester si les tableaux ont la même longueur ou alots mettre 100 au liey de N.
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
merci pour votre proposition mais au niveau de condition, j'ai remarqué que c'est inutile de répéter ( p1^ < T1+N) et ( p2 < T2+N) puisque il y a la condition ( p1^ = p2^) donc :
tant que ( p1^ = p2^) et (p1 < T1+N) est suffisant ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !