Ecrire un programme qui lit un entier X et un tableau A du type int au clavier et �limine toutes les occurrences de X dans A en tassant les �l�ments restants. Le programme utilisera les pointeurs P1 et P2 pour parcourir le tableau.
J'ai pas compris la partie du code en rouge. On a deux pointeurs p1 et p2 qui pointent au tableau A. Comment je suis en train d'eliminer les occurrences du tableau?? Je vois que p2 pointe uniquement sur les elements distincts. Je n'ai pas tres bien assimilie le deplacement des pointeurs et la relation entre p1 et p2.
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 void main(){ char test[10]; int A[10],*p1,*p2,x,n; cout<<"Donnez la dimension du tableau: "; cin>>n; for(p1=A;p1<A+n;p1++){ cout<<"Donner un element: "; cin>>*p1; } cout<<"Donner l'element a eliminer: "; cin>>x; /* Effacer toutes les occurrences de X et comprimer : */ /* Copier tous les �l�ments de P1 vers P2 et augmenter */ /* P2 pour tous les �l�ments diff�rents de X. */ for(p1=p2=A;p1<A+n;p1++){ if(*p1!=x){ *p2=*p1; p2++; } } /* Nouvelle dimension de A */ n=p2-A; cout<<"n "<<n<<" p2: "<<p2<<" A "<<A; for(p1=A;p1<A+n;p1++) cout<<*p1<<" "; }
Partager