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 lespace 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 lespace m moire r serv .
Important : Dans la suite, il est obligatoire dutiliser 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 laffichage des n entiers
contenus dans un tableau tab.
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 dafficher le tableau et l l ment qui appara t le
plus souvent dans le tableau.
Exercice 3 (DS 2018)
Publicité
Soit le programme C suivant qui consiste cr er un tableau dynamique dentiers, 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 ;
int i;
printf("Saisir la taille du tableau : ");
scanf("%d", N);
T = (int*) malloc(sizeof(int));
for(i=1; i<N;i++)
T = i*2
}
Questions
1. Corriger toutes les erreurs du programme.
2. On suppose que lutilisateur a saisi 8 comme taille du tableau T, et que linitialisation a t
faite comme indiqu e la question 1.
0 2 4 6 8 10 12 14
0
1
Publicité
2
3
4
5
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 lex cution des expressions de la question 2. (0.75pt)
Exercice 4 (Structures et pointeurs)
Reprendre lexercice 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 dune mani re dynamique. Par ailleurs, la structure joueur est
Publicité
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
dune 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 prnom du participant
}PARTICIPANT;
typedef struct{
int identifiant ; // identifiant de la comptition
char nom_comp[10]; // le nom de la comptition
PARTICIPANT tab[20]; // un tableau des diffrents participants & la
comptiton
Publicité
}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 .