Programmation impérative : TP 5

Allocations

Vous avez besoin dans la suite de la bibliothèque stdlib.h.

  1. Proposez une fonction qui sur la donnée de deux double, et seulement deux, retourne un pointeur sur un double de la valeur maximale des deux paramètres.
  2. Proposez une fonction qui sur la donnée de deux tableaux ta, tb de même taille size (donc trois paramètres) retourne un tableau de même taille nouvellement alloué qui contient leurs différences point-à-point.
  3. On souhaite obtenir un tableau trié contenant les mêmes valeurs qu'un tableau t passé en paramètre sans modifier ce dernier. Proposez une fonction qui retourne un pointeur sur un tel tableau trié.

Chaînes de caractères

On sera amené à faire des allocations dynamiques.

  1. (Vu en TD) Écrire une fonction qui retourne la longueur d'une chaîne de caractère, vue comme un tableau.
  2. Écrire une fonction qui sur la donnée d'une chaîne de caractères retourne une copie de cette chaîne.
  3. Écrire une fonction qui sur la donnée de deux chaînes de caractères retourne la concaténation de ces chaînes. (Exemple : avec "coucou" et "toto", retourne "coucoutoto".)
  4. Écrire une fonction qui sur la donnée d'une chaîne de caractères et de deux indices i et j, retourne une copie de la sous-chaîne comprise entre l'indice i inclus et j non-inclus. Penser à bien renseigner les préconditions de la fonction !
  5. Écrire une fonction qui sur la donnée d'un caractère sep et d'une chaîne s, retourne un tableau contenant les sous-chaînes de s délimitées par sep. Par exemple, pour sep = ';' et s = "ab;cde;;f;g hi", cette fonction retourne une tableau de taille 5 contenant les chaînes "ab" "cde" "" "f" et "g hi".

    NB : en pratique, pour pouvoir utiliser une telle fonction, il faudrait soit retourner également sa taille (avec un enregistrement, ou dans un paramètre supplémentaire passé par référence), ou alors ajouter une case supplémentaire contenant l'adresse NULL marquant la fin du tableau.
  6. Écrire une fonction qui sur la donnée d'une chaîne de caractère s et d'un caractère c retourne l'adresse de la première occurrence de c dans s, ou NULL si c n'est pas présent dans s.