100% ont trouvé ce document utile (3 votes)
1K vues4 pages

Exercice sur les pointeurs en C

Le document contient quatre exercices sur l'utilisation des pointeurs en C++. Les exercices proposent des problèmes de manipulation de tableaux et leurs solutions utilisant des pointeurs pour parcourir et modifier les éléments des tableaux.

Transféré par

jack mora
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (3 votes)
1K vues4 pages

Exercice sur les pointeurs en C

Le document contient quatre exercices sur l'utilisation des pointeurs en C++. Les exercices proposent des problèmes de manipulation de tableaux et leurs solutions utilisant des pointeurs pour parcourir et modifier les éléments des tableaux.

Transféré par

jack mora
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Faculté des Sciences de Kénitra

Dépt. d’Informatique

Algorithmique et programmation en C++


TD N° 4 : Les pointeurs

Exercice 1

Ecrire un programme qui lit deux tableaux A et B et leurs dimensions N et M au clavier et qui
ajoute les éléments de B à la fin de A. Utiliser le formalisme pointeur à chaque fois que cela
est possible.

Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int A[100], B[50]; /* tableaux */
int N, M; /* dimensions des tableaux */
int I; /* indice courant */

/* Saisie des données */


printf("Dimension du tableau A (max.50) : ");
scanf("%d", &N );
for (I=0; I<N; I++)
{
printf("Elément %d : ", I);
scanf("%d", A+I);
}
printf("Dimension du tableau B (max.50)
(max : ");
scanf("%d", &M );
for (I=0; I<M; I++)
{
printf("Elément %d : ", I);
scanf("%d", B+I);
}
/* Affichage des tableaux */
printf("Tableau donné A :\n");
:
for (I=0; I<N; I++)
printf("%d ", *(A+I));
*(A+I)
printf("\n");
printf("Tableau
f("Tableau donné B :\n");
:
for (I=0; I<M; I++)
printf("%d ", *(B+I));
*(B+I)
printf("\n");
/* Copie de B à la fin de A */
for (I=0; I<M; I++)
*(A+N+I) = *(B+I);
/* Nouvelle dimension de A */
N += M;
/* Edition du résultat */
printf("Tableau résultat A :\n");
:
for (I=0; I<N; I++)
printf("%d ", *(A+I));
*(A+I)
printf("\n");
return 0;
}

Pr. Yassine Rhazali Algorithmique et programmation


Faculté des Sciences de Kénitra
Dépt. d’Informatique

Exercice 2

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.

Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int A[50]; /* tableau donné */
int N; /* dimension du tableau */
int X; /* valeur à éliminer */
int *P1, *P2; /* pointeurs d'aide */

/* Saisie des données */


printf("Dimension du tableau (max.50) : ");
scanf("%d", &N );
for (P1=A; P1<A+N; P1++)
{
printf("Elément %d : ", P1-A);
P1
scanf("%d", P1);
}
printf("Introduire l'élément X à éliminer du tableau : ");
scanf("%d", &X );
/* Affichage du tableau */
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
/* 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++)
{
*P2 = *P1;
if (*P2 != X)
P2++;
}
/* Nouvelle dimension de A */
N = P2-A;
/* Edition du résultat */
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
return 0;
}

Exercice 3

Ecrire un programme qui range les éléments d'un tableau A du type int dans l'ordre inverse.
Le programme utilisera des pointeurs P1 et P2 et une variable numérique AIDE pour la
permutation des éléments.

Solution :

Pr. Yassine Rhazali Algorithmique et programmation


Faculté des Sciences de Kénitra
Dépt. d’Informatique
#include <stdio.h>
main()
{
/* Déclarations */
int A[50]; /* tableau donné */
int N; /* dimension du tableau */
int AIDE; /* pour la permutation */
int *P1, *P2; /* pointeurs d'aide */
/* Saisie des données */
printf("Dimension du tableau (max.50) : ");
scanf("%d", &N );
for (P1=A; P1<A+N; P1++)
{
printf("Elément %d : ", P1-A);
P1
scanf("%d", P1);
}
/* Affichage du tableau */
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
/* Inverser le tableau */
for (P1=A,P2=A+(N-1);
1); P1<P2; P1++,P2--)
P1++,P2
{
AIDE = *P1;
*P1 = *P2;
*P2 = AIDE;
}
/* Edition du résultat */
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
return 0;
}

Exercice 4

Ecrire un programme qui lit deux tableaux d'entiers A et B et leurs dimensions N et M au


clavier et qui ajoute les éléments de B à la fin de A. Utiliser deux pointeurs PA et PB pour le
transfer et afficher le tableau résultant A.

Solution :
#include <stdio.h>
main()
{
/* Déclarations */
int A[100], B[50]; /* tableaux */
int N, M; /* dimensions des tableaux */
int *PA,*PB; /* pointeurs d'aide */

/* Saisie des données */


printf("Dimension du tableau A (max.50) : ");
scanf("%d", &N );
for (PA=A; PA<A+N; PA++)
{
printf("Elément %d : ", PA-A);
PA
scanf("%d", PA);
}
printf("Dimension du tableau B (max.50) : ");
scanf("%d", &M );

Pr. Yassine Rhazali Algorithmique et programmation


Faculté des Sciences de Kénitra
Dépt. d’Informatique
for (PB=B; PB<B+M; PB++)
{
printf("Elément %d : ", PB-B);
PB
scanf("%d", PB);
}
/* Affichage des tableaux */
printf("Tableau donné A :\n");
:
for (PA=A; PA<A+N; PA++)
printf("%d ", *PA);
printf("\n");
printf("Tableau donné B :\n");
:
for (PB=B; PB<B+M; PB++)
printf("%d ", *PB);
printf("\n");
/* Copier B à la fin de A */
for (PA=A+N,PB=B ; PB<B+M ; PA++,PB++)
*PA = *PB;
/* Nouvelle dimension de A */
N += M;
/* Edition du résultat */
printf("Tableau résultat A :\n");
:
for (PA=A; PA<A+N; PA++)
printf("%d ", *PA);
printf("\n");
return 0;
}

Pr. Yassine Rhazali Algorithmique et programmation

Vous aimerez peut-être aussi