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<<" ";
}