R1.01 – TP5 – Exercice 13

Dans cet exercice, on souhaite justifier une chaine de caractères sur XXX caractères (XXX étant un entier naturel). Pour cela, écrire le corps de la fonction Justify () de signature :

string & Justify (string & Str, const unsigned long & Width);

L’algorithme de haut niveau est le suivant :

  1. Remplacer tous les caractères d’espacement par un espace, et compter combien d’espaces on a à la fin de cet opération.
  2. Substituer (remplacer) chaque caractère d’espacement par le nombre d’espaces nécessaires.

Vue la complexité de l’étape (2), vous pouvez utiliser les fonctions find () et insert () sur les string.

Ecrire le corps des deux fonctions suivantes :

vector <string> & Justify (vector <string> & VString, const unsigned long & Width);
vector <string> & Justify (vector <string> & VString, const unsigned & LineNumber, const unsigned long & Width);

La première justifie toutes les lignes du vecteur, la seconde ne s’applique à la ligne LineNumber.

Modifier le main () pour prendre en compte ses deux fonctions. L’appel de ces fonctions se fait en saisissant la chaine « jus» suivie de « tout » ou d’un numéro de ligne.