Bonjour,
Mon avis sur la rédaction de cet énoncé :
*) heureusement que je connaissais le principe de cette suite. Mais je ne suis pas sûr que la description qui en en faite m'aurait suffi à permettre de comprendre s'il n'en avait pas été ainsi, c'est une suite quand même assez déconcertante quand on ne connait pas.
*) "Dîtes" ne prend pas d'accent circonflexe.
*) Quand j'ai lu "On vous donne un nombre, à vous de donner le nombre suivant." j'ai cru qu'on parlait de la suite de "nombres" qui est donnée au début de l'énoncé (1, 11, 21, etc) alors qu'il n'en est rien.
*) La description des ENTRÉES est selon moi bien trop peu détaillée et à la limite mal formulée. Il n'est pas dit que N
et la suite de chiffres sont dans des lignes différentes (même si les exemples en-dessous le laissent supposer). Ce que
je trouve très gênant, c'est qu'il n'est pas dit ce qui sépare N du début du premier chiffre de la suite : peut-il y
avoir des espaces ou le saut de ligne est-il _immédiatement_ consécutif à N ? C'est important parce que la ligne
suivante est à saisir caractère par caractère et donc si on vise mal, on ne va pas capturer toute la chaîne. En fait, je
viens de me rendre compte que l'énoncé suggère dans le code C de capturer la chaîne comme une chaîne et pas caractère
par caractère : j'en vois une nouvelle insuffisance de rédaction de l'énoncé, je n'ai pas à chercher cela dans le code
source. Il aurait fallu dire que la suite de caractères était terminée par un caractère nul. C'est d'autant moins
prévisible que le nombre de caractères est donné et donc en fait cela n'a aucun intérêt pour capturer la chaîne.
Par ailleurs, l'énoncé décrit N comme étant "taille du nombre, compris entre 0 et 10000". C'est très ambigu, moi j'ai
cru qu'on parlait du nombre lui-même et non de son nombre de chiffres. Et puis, ce nombre n'est jamais considéré comme
tel (un nombre) mais juste une suite de caractères, par exemple la 4ème ligne de l'exemple introductif de l'énoncé
(1211) ne se lit ni ne se comprend "mille deux cent onze" mais plutôt comme "un, deux, un, un". Ainsi la formulation de
la deuxième ligne de la partie ENTREE qui dit :
"Un nombre de N chiffres." est maladroite car il ne s'agit pas d'un nombre et il ne sera pas considéré comme tel.
*) Les exemples sont à nouveau mal choisis. Celui qui n'a pas compris le fonctionnement de la suite n'apprendra rien de
nouveau avec les exemples car le premier reprend celui déjà donné dans la description et il est vraiment trop simple (un
seul chiffre) pour permettre de comprendre si on n'a pas déjà compris. Quant au deuxième exemple, il est outrageusement
compliqué.
Je trouve qu'il aurait fallu donner un nouvel exemple et qui soit simple, genre 022274 (le faire commencer par un zéro
histoire de bien faire comprendre qu'on n'a pas affaire à un nombre).
*) Pour la sortie, on pourrait préciser que la chaîne réponse doit être suivie par un saut de ligne.
*) Le texte du code C comporte un problème d'encodage avec les accents. Je trouve en plus le code très tendancieux : recours à malloc en fait pas du tout nécessaire, construction de la fonction qui n'a en fait rien de nécessaire (pourquoi devrait-on retourner une chaîne ? chacun fait comme il veut). Bon, en fait j'ai bien compris que le code est juste là pour indiquer comment sont saisies les entrées et comment doit se faire la sortie, le tout est que le candidat comprenne qu'il a quand même une bonne marge de manœuvre par rapport à ça.
*) Pourquoi autant de temps (10 secondes) pour un programme qui ne nécessite que peu de temps d'exécution ?