Outils pour utilisateurs

Outils du site


pg108:tp9

Gestion de la mémoire

Concaténation de chaines de caractères

Créez une fonction qui reçoit deux chaînes de caractères en argument, et qui retourne une chaîne de caractère constituée des deux chaînes mises bout à bout.


Lecture d'un vecteur dans un tableau

Écrivez une fonction qui lit un tableau contenu dans un fichier. Cette fonction reçoit un nom de fichier comme argument, elle crée et renvoie un tableau. Le fichier doit contenir des valeurs numériques au format texte (une valeur par ligne). Le tableau créé (et renvoyé par la fonction) contiendra les valeurs du fichier au format double.

Proposez une solution pour également connaître la taille du tableau.


Saisie de liste

Dans cet exercice, nous allons créer un programme capable de demander la saisie d'une liste de noms (ou de données). Il est constitué de plusieurs étapes à remplir successivement. LA technique que nous allons mettre en oeuvre est assez brutale, nous verrons au semestre prochain comment faire plus subtil.

Le programme demandera des noms tant que l'utilisateur en donnera. Il se terminera lorsque l'utilisateur aura entré une ligne vide. Tous les noms seront stockés dans un tableau de chaînes de caractères nommé data. Comme il n'est pas possible de retrouver la taille d'un tableau, nous identifierons la fin du tableau par la valeur NULL. S'il était possible d'anticiper la taille du tableau data, nous pourrions le déclarer comme suit (n étant la taille du tableau) :

  char *data[n];

Malheureusement, le nombre de noms à stocker va évoluer lors de l'éxécution du programme, il faudra donc régulièrement recréer un tableau plus grand pour ajouter des données. Data doit donc être un pointeur vers une zonne de données qu'il faudra régulièrement mettre à jour. Son type de données sera donc :

  char **data;
  1. créez un programme qui déclare et initialisz le tableau data. Cela signifie qu'il faut réserver une zone de données qui sera pointée par data et que cette zone contiendra une seule valeur de type char * , initialisée à NULL.
  2. créez une fonction qui reçoit un tableau de noms comme argument et qui renvoie le nombre de valeurs stockées dedans (le nombre de valeurs avant de lire NULL). Cette fonction doit renvoyer 0 si elle est utilisée sur data fraîchement initialisée.
  3. créez une fonction new_name qui demande un nouveau nom à l'utilisateur et qui renvoie la chaîne de caractères correspondante. Si aucun nom n'a été donné par l'utilisateur, new_name renvoie NULL.
  4. créez la fonction add_value qui reçoit un nouveau nom et un tableau de noms. add_value crée un nouveau tableau de noms dans lequel il recopie l'ancien tableau reçu et ajoute le nouveau nom.
  5. utilisez les fonctions précédentes pour faire en sorte que data pointe vers un tableau contenant tous les noms déjà entrés.
  6. Testez votre programme en affichant tous les noms entrés après la saisie du dernier nom.
pour le fun

Si vous avez le temps, vous pouvez d'abord trier les noms dans l'ordre alphabétique avant de les afficher.

pg108/tp9.txt · Dernière modification: 2021/11/22 17:16 par bornat