./20 : ah oui, sauf que là tu ne changes rien au problème, "test" est toujours testé deux fois par tour de boucle, comme dans le post
./14en copiant le système d'Ada du post
./21 (je ne connais pas), on peut faire ça :
while (1)
{
test = expression
if (!test)
break;
...
}
mais c'est pas super élégant je trouve (même si ça reste la moins pire des solutions pour l'instant)