0% ont trouvé ce document utile (0 vote)
21 vues4 pages

TD Tableau Pointeur

Le document présente un atelier de programmation avancée sur les tableaux et les pointeurs en C. Il décrit des exercices pour identifier les éléments PEAK dans des tableaux 1D et 2D, en incluant des instructions pour créer des programmes, vérifier les conditions de PEAK, et utiliser des structures de données dynamiques. Des exemples et des étapes précises sont fournis pour guider les étudiants dans la mise en œuvre des solutions.

Transféré par

hichemlachkhem1
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
0% ont trouvé ce document utile (0 vote)
21 vues4 pages

TD Tableau Pointeur

Le document présente un atelier de programmation avancée sur les tableaux et les pointeurs en C. Il décrit des exercices pour identifier les éléments PEAK dans des tableaux 1D et 2D, en incluant des instructions pour créer des programmes, vérifier les conditions de PEAK, et utiliser des structures de données dynamiques. Des exemples et des étapes précises sont fournis pour guider les étudiants dans la mise en œuvre des solutions.

Transféré par

hichemlachkhem1
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

I.S.S.A.

T Gabes - Département Électronique Programmation Avancée


Enseignants : G. Tlik et S. Ben Ahmed

Atelier Programmation Avancée


Les Tableaux & Les pointeurs

Exercice 1. L’objectif de cet exercice est d’écrire un programme C permet de trouver les
éléments PEAK dans un tableau 1D des entiers :

Définition. Un élément PEAK dans un tableau est défini comme un élément strictement
supérieur à ses éléments adjacents. Les éléments de bord sont considérés comme étant en
position de PEAK s’ils sont supérieurs à leur seul élément voisin. Dans les cas où les éléments
sont égaux, il n'y a pas de PEAK stricte.

• Exemple :
• Tableau A :
10 20 15 2 23 90 67
• L’élément 20 est PEAK : il est plus grand strictement à ses deux voisin 10 et 15
• Aussi pour l’élément 90,

1. Créer un nouveau fichier « peak1d.c » et inclure les bibliothèques :


• <stdio.h>, <stdlib.h> et <time.h>
2. Ajouter une méthode main()
3. Déclarer dans la fonction main : une variable k de type « int » et un tableau A de type
« int » de taille max = 100,
4. Ajouter dans main un boucle « do..while» pour demander à l’utilisateur de saisir la
valeur de k (k doit être strictement positif)
5. Ajouter dans main une boucle de répétition (for / while) pour remplir le tableau A
aléatoirement, à l’aide de la fonction rand,
• On suppose que les valeurs de tableau A sont dans l’intervalle [-k, k],
6. Ajouter une structure conditionnelle de type (if..else) permet de vérifier si le premier
élément du tableau A est un vrai PEAK
7. Ajouter une structure conditionnelle de type (if..else) permet de vérifier si le dernier
élément du tableau A est un vrai PEAK
8. Utiliser une boucle de répétions (for / while) pour généraliser la recherche des PEAK
dans le tableau A
9. Compiler est tester votre programme
10. Récrire votre programme pour stocker tous les PEAK du tableau A dans un tableau P en
respectant leurs positions dans A :
• Exemple :
• Tableau A :
1 0 2 3 1 2 0
• Tableau P contenant seulement les PEAK de A selon leurs positions :
1 3 2

11. Proposer les modifications version de votre programme pour chercher les positions des
éléments PEAK dans le tableau A,

1
peak1d.c
//--Question 1 & 2. Créer le source C et inclure les bibliothèques standard

#include<time.h>
#include<stdio.h>
#include<stdlib.h>

int main()
{
//--Question 3. Déclarer : k ‘entier’ et A ‘tableau_1D’ de taille max=100,

//--Question 4. Demander de l’utilisateur de saisir (k), un entier > 0,

//--Question 5. Remplir A par des valeurs aléatoires dans [-k , k],

//--Question 6. Ajouter un (if..else) pour vérifier si le 1 er element est un PEAK

//--Question 7. Ajouter un (if..else) pour vérifier si le dernier element est un PEAK

//--Question 8. Ajouter un boucle pour trouver tous les PEAK du tableau A

2
Exercice 1-bis.
Réécrire le programme « peak1d.c » en remplaçant les tableaux statiques par une
représentation dynamique à l’aide de pointeurs

Exercice 2. Recherche les PEAK dans un tableau 2D


L’objectif de cet exercice est de généraliser le problème de PEAK dans un tableau 2D.

Définition. Un élément PEAK dans un tableau 2D est défini comme un élément strictement
supérieur à ses éléments 4 adjacents. Les éléments de bord sont considérés comme étant en
position de PEAK s’ils sont supérieurs à leur 2 voisin. Dans les cas où les éléments sont égaux,
il n'y a pas de PEAK stricte.

Soit A un tableau_2D de 4 lignes et 3 colonnes


• Un élément A[i][j] est un PEAK2D s’il est 10 8 5
strictement plus grand que ses 4 voisins
3 2 1
• Exemple :
o A[2][1] est un peak (l’élément de valeur 13) 7 13 4
o A[0][0] est un peak (l’élément de valeur 10) 6 8 3

• Proposer un programme complet comme dans l’exercice 1 permet de créer et remplir


une matrice aléatoirement puis chercher tous les éléments PEAK dans cette matrice,

j-1 j j+1

i-1 A[i-1][j]

i A[i][j-1] A[i][j] A[i][j+1]

i+1 A[i+1][j]

Figure 1. Les 4 voisins d’un élément (i,j) dans une matrice 2D.

3
Exercice 2bis.
Réécrire le programme « peak2d.c » en utilisant la notion de 8 voisinages d’un élément (i,i)
dans une matrice

j-1 j j+1

i-1 A[i-1][j-1] A[i-1][j] A[i-1][j+1]

i A[i][j-1] A[i][j] A[i][j+1]

A[i+1][j-
i+1 A[i+1][j] A[i+1][j+1]
1]

Figure 2. Les 8 voisins d’un élément (i,j) dans une matrice 2D.

Vous aimerez peut-être aussi