Allocation dynamique de mémoire

Liste des travaux pratiques

Tableau dynamique de notes avec la taille fixée par l'opérateur

Vous allez faire un petit programme qui permet de calculer la moyenne d'un ensemble de notes. Pour cela, l'opérateur fixe le nombre de note à saisir et introduit ensuite l'ensemble des notes. Une fois que toutes les notes sont saisies, la moyenne est calculée et s'affiche directement à l'écran.

Affichage et résultats dans le terminal
Nombre de notes ?
4
Note n°1
18
Note n°2
15
Note n°3
5
Note n°4
8
moyenne : 11.5
Ici il faut mettre en oeuvre un tableau de réel. Toutefois, à priori, nous ne savons pas la dimension du tableau. Du coup, vous devez mettre en oeuvre un tableau dynamique dont la taille est spécifiée par l'opérateur. Attention : pensez à libérer la variable dynamique une fois que le calcul est effectué.

Utilisation d'un tableau de char ou d'un pointeur de char

Tapez ces lignes de code. Vous testerez chacune de ces lignes en utilisant le debugger en mode pas à pas F11. Pour chacune de variables utilisées, établissez systématiquement l'adresse de la variable ainsi que son contenu complet. Si vous avez à faire à des pointeurs, donnez l'adresse de la variable, l'adresse de la variable pointée et le contenu complet de la variable pointée. Faites systématiquement une représentation schématique.

Lignes de code à saisir

Expliquez ce qui se passe pour chacune des lignes
  1. Donnez l'adresse de la variable bonjour. Donnez son contenu complet. Donnez la taille de la variable. Y a t'il des cases non utilisées ? Peut-on lui affecter plus tard une autre adresse ?
  2. Donnez l'adresse de la variable salut. A quoi correspond son contenu ? Evaluer son contenu ? Son contenu peut-il varier ? Où se situe la chaîne « salut ». Déterminez son adresse. Quelle est sa taille ?
  3. Donnez l'adresse de la variable message. Quelle est la valeur de son contenu ? Est-ce que cette valeur est cohérente ? A quoi correspond normalement ce type de valeur ?
  4. Donnez l'adresse de la variable bienvenue. A quoi correspond son contenu ? Evaluer son contenu ? Son contenu peut-il varier ? Ou se situe la chaîne représentée par char[10]. Déterminez son adresse. Quelle est sa taille ? Quelle est sa valeur ? Sa valeur est-elle cohérente ?
  5. Que se passe t-il sur cette ligne ? Evaluer son contenu ? A quoi correspond son contenu ? Que devient la chaîne représentée par char[10]. Est-elle toujours accessible ? Est-ce que l'instruction new char[10] a un sens ? Qu'est-ce qu'il aurait fallu faire pour que cette expression ait un sens ? Avec l'écriture proposée, y a t-il perte de mémoire ?
  6. Que se passe t-il sur cette ligne ? Evaluer son contenu ? A quoi correspond son contenu ?
  7. Que se passe t-il sur cette ligne ? Evaluer son contenu ? A quoi correspond son contenu ? Que devient la chaîne « salut ». Est-elle toujours accessible ?
  8. Quelle est la chaîne de caractères modifiée ?
  9. Quelle est la chaîne de caractères modifiée ?
  10. Quelle est la chaîne qui est libérée ? Est-ce que la chaîne représentée par new char[10] a été libérée ?

Tableau dynamique de chaînes de caractères dynamiques

Reprenons lossature du programme précédent. Cette fois-ci, il s'agit de stocker des mots dans un tableau dynamique. Au lieu d'avoir un tableau de chaînes de caractères dont la taille est fixée une fois pour toute pour l'ensemble des mots, nous allons adapter dynamiquement, la taille de chacune des chaînes de caractères correspondant au mot saisie. Une fois que l'ensemble des mots a été saisie, le programme les affiche ensuite tout simplement dans l'ordre où ils ont été introduits.

Affichage et résultats dans le terminal
Nombre de mots ?
3
Mot n°1
Bonjour
Mot n°2
Salut
Mot n°3
Bienvenue
Mots n°1 : Bonjour
Mots n°2 : Salut
Mots n°3 : Bienvenue
Ce TP est plus délicat à traiter puisque plusieurs éléments sont dynamiques. Je vous invite donc à suivre la pocédure suivante :
  1. Saisie du nombre de mot à introduire dans le tableau dynamique. Déclaration au préalable de la variable nombreDeMots sous forme d'entier non signé.
  2. Création du tableau dynamique de chaînes de caractères pointé par mots à partir du nombre de mots saisie par l'opérateur.
  3. Saisie de chacun des mots, création et copie vers une chaîne dynamique. L'opérateur doit saisir le mot à stocker dans le tableau dynamique. La saisie elle-même se fera au travers d'une variable saisie qui est une chaîne de 25 caractères au maximum. A partir de là, vous devez déterminer la longueur du mot saisie et créer en conséqence une chaine de caractères dynamique dont la dimension correspond à la longueur calculée + 1 Attention au marqueur de fin de chaîne. Bien entendu, cette chaîne doit pouvoir être accessible à partir du tableau dynamique. Ensuite vous devez copier le mot qui se trouve dans la variable saisie vers cette nouvelle chaîne dynamique. Cette suite d'opération est à réaliser pour chacun des mots saisies.
  4. Affichage de l'ensemble du tableau de chaînes de caractères.
  5. Libération de la mémoire occupée par chacune des chaînes dynamiques.
  6. Libération du tableau dynamique.
A chacun des new doit correspondre un delete.