Vous êtes sur la page 1sur 3

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique

Université de Carthage
École Nationale d’Ingénieurs de Carthage
Année Universitaire : 2022/2023
Enseignants TP
Cours : Mr. Alaeddine BAROUNI Programmation C Classe : 1ère Ing. Info
TP : Mr. Slaheddine LASSIR
Mr. Med Chiheb BEN CHAABANE

TP3 : Tableaux et Pointeurs en C

Objectifs :
 Maîtrise des Tableaux en tant que Structure de Données en langage C.
 Maîtrise des Algorithmes de Tri en langage C.
 Maîtrise du mécanisme des Pointeurs en langage C.

I. Les Tableaux

EXERCICE 1
Écrire un programme qui lit 12 nombres, en fait la moyenne, et affiche les nombres supérieurs à cette
moyenne.
EXERCICE 2
Écrire un programme C qui affiche le nombre maximum d’un Tableau. Procéder de 2 manières.

EXERCICE 3

Écrire un programme C qui permet de faire le Tri d’un tableau en utilisant les algorithmes suivants :

 Tri par Insertion.


 Tri par Sélection.
 Tri Fusion.

II. Les Tableaux à 2 Dimensions (Les Matrices)

EXERCICE 4
Écrire un programme C qui permet de faire la multiplication de 2 matrices carrées.

Page 1 sur 3
EXERCICE 5
Écrire un programme C qui permet de faire la multiplication de 2 matrices « non carrées ».

III. Les Pointeurs

EXERCICE 6
Soit P un pointeur qui "pointe" sur un tableau A :

int A[] = {12, 23, 34, 45, 56, 67, 78, 89, 90};

int *P;

P = A;

Quelles valeurs ou adresses fournissent ces expressions :

a- *P+2

b- *(P+2)

c- &P+1

d- &A[4]-3

e- A+3

f- &A[7]-P

g- P+(*P-10)

h- *(P+*(P+8)-A[7])

EXERCICE 7

Écrire un programme C qui lit une chaîne de caractères CH de taille maximum 100 et détermine la longueur
de la chaîne à l'aide d'un pointeur P. Le programme n'utilisera pas de variables numériques.

EXERCICE 8
Écrire un programme qui lit 5 mots d'une longueur maximale de 50 caractères et les mémorise dans un
tableau de chaînes de caractères TABCH.

Inverser l'ordre des caractères à l'intérieur des 5 mots à l'aide de deux pointeurs P1 et P2. Afficher ces mots.

Page 2 sur 3
EXERCICE 9
Écrire en C une fonction : void pos_car(char T[],int n, char c, int *p_occ, int *d_occ), qui étant donnés un
tableau T de n caractères et un caractère c, détermine les valeurs p_occ et d_occ qui désignent
respectivement les indices de la première et de la dernière occurrence du caractère c dans le tableau T.
Exemple :
Soit le caractère c = ‘a’ et le tableau T suivant contenant 10 caractères :
b a a a b a c a a b
0 1 2 3 4 5 6 7 8 9

alors p_occ recevra 1 et d_occ recevra 8. En effet, le caractère ‘a’ apparaît pour la première fois à la
position 1 et pour la dernière fois à la position 8.

EXERCICE 10

0 1 1 0 1 0 1 1 1 0 1 0
0 1 2 3 4 5 6 7 8 9 10 11

La coupe tab[0..1] est équilibrée


La coupe tab[0..3] est équilibrée (deux 1 et deux 0)
La coupe tab[0..5] est équilibrée
La coupe tab[2..5] est équilibrée.

1. Écrire une fonction : int est_equilibree(int tab[], int i, int j) , qui, étant donné un tableau tab, et deux
entiers i et j, retourne vrai si la coupe tab[i..j] est équilibrée et faux sinon.
2. Écrire une fonction : void max_coupe(int tab[], int n, int *l, int *i, int *j) , qui, étant donnés un tableau
tab de n éléments, retourne la longueur l de la plus longue coupe équilibrée (celle qui a le plus grand
nombre d’éléments) ainsi que les indices i et j de début et de fin de cette plus longue coupe.

/. Bon Travail ./

Page 3 sur 3

Vous aimerez peut-être aussi