Algorithmique et Structures de Données 2 - TP N°4 : LES POINTEURS

Page 1 sur 3Lecteur de document UniversityLib

Algorithmique et Structures de Données 2 - TP N°4 : LES POINTEURS

Programming, Data Structures, C Language · lab

Voir tous les documents en programmation

Algorithmique et Structures de Données 2 TP N°4 : LES POINTEURS

Niveau : 1

ère

année BC

Année universitaire : 2019/2020

Exercice 1

- Créer un programme C déclarant deux pointeurs p1 et p2 sur des réels. - Utiliser malloc pour réserver l’espace mémoire. - Affecter les valeurs -67.3 et 345.89 aux emplacements pointés par p1 et p2. - Afficher la valeur des pointeurs et des objets pointés. - Libérer l’espace mémoire réservé.

Important : Dans la suite, il est obligatoire d’utiliser la syntaxe des pointeurs sur les tableaux

Exercice 2

1- Écrire la fonction SaisirTab(int *tab, int n) qui permet de saisir n entiers et de les stoker

dans un tableau tab.

2- Écrire la fonction PlusSouvent(int *tab, int n) qui détermine l’élément qui apparait le

plus souvent dans le tableau tab.

3- Écrire la fonction AfficherTab(int *tab, int n) qui permet l’affichage des n entiers

contenus dans un tableau tab.

Publicité

4- En utilisant les fonctions déjà définies, écrire un programme principal main() qui permet de saisir m entiers dans un tableau T et d’afficher le tableau et l’élément qui apparaît le plus souvent dans le tableau.

Exercice 3 (DS 2018)

Soit le programme C suivant qui consiste à créer un tableau dynamique d’entiers, et initialiser chaque case par la valeur double de son indice (la case 0 contient 0, la case 1 contient 2, .., la case N-1 contient (N*2)) :

include <stdio.h> # include <stdlib.h> main() { int T[N]; int i; printf("Saisir la taille du tableau : "); scanf("%d", N); T = (int) malloc(sizeof(int)); for(i=1; i<N;i++) T[i] = i2 }

Questions

1. Corriger toutes les erreurs du programme.

2. On suppose que l’utilisateur a saisi 8 comme taille du tableau T, et que l’initialisation a été

faite comme indiquée à la question 1.

0 2 4 6 8 10 12 14

0

1

2

3

4

5

Publicité

6

7

Soient les déclarations suivantes : int * p,x; p = T ;

Quelles valeurs ou adresses fournissent les expressions suivantes :

a) x=*T b) p = p + 6 c) *p =*p - 2 d) p = p – 4 e) *p =*p + *(T+5)

3. Donner le nouveau contenu du tableau T après son initialisation comme indiquée dans la

question 1, et l’exécution des expressions de la question 2. (0.75pt)

Exercice 4 (Structures et pointeurs)

Reprendre l’exercice sur les joueurs de rugby (TP9) où le but est de ne pas utiliser la syntaxe des tableaux mais seule celle des pointeurs. Dans ce sens, le tableau de structures contenant les 15 joueurs doit être alloué d’une manière dynamique. Par ailleurs, la structure joueur est définie comme suit :

typedef struct { int num ; char *nom ; char *pren ; float poids ; }JOUEUR ;

Les champs nom et pren sont des pointeurs sur des chaînes de caractères qui seront allouées d’une manière dynamiques. Nous allons supposer que ces chaînes sont de taille 20.

Exercice 5 (DS2013)

Soit les structures suivantes

typedef struct {

int ncin; // le ncin du participant char nom[20]; // le nom du participant char prenom [20]; // le pr‚nom du participant }PARTICIPANT;

Publicité

typedef struct{

int identifiant ; // identifiant de la comp‚tition char nom_comp[10]; // le nom de la comp‚tition PARTICIPANT tab[20]; // un tableau des diff‚rents participants … la

comp‚titon

}COMPETITION;

1- développer la fonction saisir_participant() qui permet de saisir toutes les informations relatives à un participant puis le retourner comme résultat.

2- soit la structure C qui permet de représenter un tableau de n compétitions. Développer,

en utilisant la fonction précédente, la fonction saisir_competitions(COMPETITION*C, int n) qui permet de saisir toutes les informations relatives aux n compétitions ;

Remarque : il est impératif de ne pas utiliser la syntaxe du tableau mais seule la syntaxe des pointeurs.

3- développer la fonction récursive nbre_comp(COMPETITION*C, int n, int ncin) qui permet de retourner le nombre de compétitions dans lesquelles le participant, dont le ncin est donné en paramètre, a participé

4- Développer le main qui permet de :

- Saisir le nombre total n de compétition qui ne doit pas être négatif. - Allouer un tableau pour les compétitions de 2013 qu'on nomme Comp013 comportant n compétitions. - Saisir les données concernant les n compétitions. - Saisir le ncin d'un participant et afficher le nombre de compétitiions dans lesquelles il a participé.