0% ont trouvé ce document utile (0 vote)
8 vues3 pages

Sess P

Le document présente un examen de programmation C pour l'Institut Supérieur des Arts Multimédia, comprenant des questions sur les pointeurs, la gestion de la mémoire, et la manipulation de structures de données. Il inclut des exercices pratiques sur la réécriture d'expressions, l'analyse de programmes, et la définition de structures pour gérer des arrêts de bus et des points d'intérêt. Les étudiants doivent également écrire des sous-programmes pour insérer et afficher des données dans des listes chaînées.

Transféré par

Hiba Cherif
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
8 vues3 pages

Sess P

Le document présente un examen de programmation C pour l'Institut Supérieur des Arts Multimédia, comprenant des questions sur les pointeurs, la gestion de la mémoire, et la manipulation de structures de données. Il inclut des exercices pratiques sur la réécriture d'expressions, l'analyse de programmes, et la définition de structures pour gérer des arrêts de bus et des points d'intérêt. Les étudiants doivent également écrire des sous-programmes pour insérer et afficher des données dans des listes chaînées.

Transféré par

Hiba Cherif
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd

Université de la Manouba

Institut Supérieur des Arts Multimédia

Examen Session principale Mai 2024


Atelier de programmation II
1-IM
Responsables : Dr. Salma Smaoui et Dr. Ikram Chaâbane
Durée : 1h.30

Documents et portables non autorisés

Questions

1. On considère que les déclarations suivantes ont été faites :


int a;
char tab[10];

Réécrire ces expressions en remplaçant les écritures avec pointeurs par des expressions
sans pointeurs et vice versa.

- Si c’est une expression avec pointeurs, la réécrire sans l’usage explicite des pointeurs
- Sinon, la réécrire avec l’usage explicite des pointeurs

a) *(&a) ;
b) *tab ; e) &(tab[0]) ;
c) *(tab + 0) ; f) &(tab[i]) ;
d) (*tab) + 1 ; g) ++tab[i] ;

2. Considérons maintenant :

char *p;
p = tab + 1;

a. Quelle sera la différence en octets entre les deux adresses tab et p ?


b. Même question si tab et p sont déclarés pointer sur des int.

3. Indiquer ce qu’affiche l’exécution du programme C suivant :

#include <stdlib.h> int main () {


#include <stdio.h> int x = 5, y = 7, z = 9;
f1 ( x, &y );
void f1 ( int a, int *b ) { a = printf ( "x = %d, y = %d, z = %d\n", x, y,
*b; } z );
void f2 ( int *b, int c ) { *b = f2 ( &x, y );
c; } printf ( "x = %d, y = %d, z = %d\n", x, y,
void f3 ( int *a, int c ) { f4 z );
( &a, c ); } f3 ( &y, z );
void f4 ( int **b, int a ) { **b printf ( "x = %d, y = %d, z = %d\n", x, y,
= a; }

Page 1 sur 3
z );
return 0;
}

4. Quelle sera la sortie du programme ?

int main() {
int i=3, *j, k ;
j = &i;
printf("%d\n", i* (*j)*i+(*j)) ;
return 0 ;
}

5. Écrire, en utilisant la notion des pointeurs, les expressions manquantes dans le code
1 pour lire les éléments du tableau et dans le code 2 pour les afficher

Code 1 Code 2
void modifierTab( int ** t, int n) void main() {
{ int * tab =NULL;
*t=malloc(n*sizeof(int)); int taille=4;
for(int i=0;i<n;i++) modifierTab(&tab,taille);
{ .................. } for (int i=0; i<taille; i++)
} { .................. }
}

Exercice

Une société de transport chargée de gérer les itinéraires de ses bus touristiques souhaite
informatiser son système. On propose d’utiliser une liste doublement chaînée pour
représenter les arrêts du bus le long de chaque ligne de transport.
Un arrêt est identifié par un code unique (int), un nom (chaine de caractères) et une liste de
points d’intérêts touristiques (parcs, musée, monuments, …) à proximité de cet arrêt.
Un point d’intérêt touristique est caractérisé par son nom (chaine de caractères).
On vous demande de d’écrire le code C pour :
1- Définir le type structure point touristique PTour en utilisant une liste simplement
chainée pour représenter les points touristiques de chaque arrêt
2- Définir le type structure Arret en utilisant une liste doublement chainée pour les
d’arrêts
3- Définir un sous-programme pour insérer un nouveau point touristique en tête de la
liste des points touristiques d’un arrêt dont le nom est passé en paramètre
4- Définir un sous-programme pour insérer un nouvel arrêt en queue de la liste des arrêts.
5- Définir un sous-programme qui prend en paramètre la liste des arrêts et affiche pour
chacun les noms des points touristiques à son proximité
6- Définir un sous-programme pour supprimer l’arrêt numéro k dans la liste

Page 2 sur 3
On vous propose un programme principal qui pourra faire appel aux sous-programmes définis

void main() {
// 1. Création d'une liste d'arrêts initialement vide
Arret *listeArrets = NULL;

// 2. Insertion de quelques arrêts


insererArret (&listeArrets, 1, "Arret 1");
insererArret (&listeArrets, 2, "Arret 2");
insererArret (&listeArrets, 3, "Arret 3");

// 3. Insertion de points touristiques pour certains arrêts


insererPTour (listeArrets, "Arret 1", "Parc");
insererPTour (listeArrets, "Arret 2", "Musée");
insererPTour (listeArrets, "Arret 1", "Restaurant");

// 4. Affichage des points touristiques à proximité de


chaque arrêt
afficherPTour (listeArrets);

// 5. Suppression d'un arrêt


supprimerArret(&listeArrets, 2);

// 6. Affichage mis à jour des points touristiques à


proximité de chaque arrêt
afficherPTour(listeArrets);
}

Page 3 sur 3

Vous aimerez peut-être aussi