Petit problème, à résoudre en moins d'une heure (vingt minutes à une demi-heure pour les plus rapides), en langage C.
Voici votre code initial :
#include <stdio.h>
int main ()
{
char chn[81], crt, *ptr1, *ptr2;
scanf ("%80[^\n]",chn);
/* Insérez votre code ici */
printf ("%s\n",chn);
return 0;
}
L'utilisateur entrera une ligne de 80 caractères maximum, composée de caractères ASCII compris inclusivement entre 32 et
126. Ni le premier ni le dernier caractère entrés sont égaux à 32, et deux caractères avec ce code ne se suivent
jamais.
On considère qu'un mot est une séquence de caractères de code différent de 0x20 se suivant dans la chaîne entrée.
Pour votre information, le caractère de code 2\^5 est l'espace en ASCII.
Votre but est d'inverser la position de tous les mots dans chn
, de sorte que le premier vienne en dernier,
le deuxième en avant-dernier, etc.
Exemple :
Entrée : Une chaine de test
Sortie : test de chaine Une
Vous n'avez le droit d'écrire qu'à l'emplacement du commentaire. Vous n'avez pas droit à des déclarations
supplémentaires (vous avez pour seuls outils deux pointeurs et un caractère), et aucun appel supplémentaire à quelque
bibliothèque que ce soit ne doit être fait. Pas de préprocesseur d'ailleurs (tant qu'à faire) ; juste les instructions
de contrôle du C et des expressions à partir de constantes et de vos variables.
J'ai résolu ce problème il y a deux ans en deux heures et j'ai su retrouver la solution aujourd'hui en trois quarts
d'heure.
À vous.