Interro IUP1 --- Novembre 1996 --- module 101 Duree : 45 mn sur table, puis 30 mn sur machine. Copie au crayon interdite. On se propose de recuperer dans un tableau le plus grand entier strictement negatif et le placer en premiere case de ce meme tableau par echange avec l'element qui etait dans cette premiere case. Ecrire sans commentaire un programme Pascal qui fait exactement les choses suivantes. 1. Lire 10 entiers quelconques compris entre -99 et 999, separes par un nombre quelconque de blancs, sur une seule ligne, sur l'entree standard, et les mettre dans un tableau de taille 10 (indices de 1 a 10), sans aucun dialogue avec l'utilisateur (aucune ecriture sur la sortie standard). (Le choix de -99 et 999 est simplement pour assurer un affichage sur 3 caracteres.) 2. Si tous les entiers sont positifs ou nuls, le tableau n'est pas modifie et le programme ecrit sur la sortie standard uniquement le caractere 0 (zero) suivi immediatement d'un retour charriot et rien d'autre. 3. Si le tableau contient des entiers strictement negatifs, alors soit x le plus grand entier strictement negatif (rappel : -3 < -2), et i l'indice de la premiere case le contenant ; autrement dit, i est le plus petit indice de toutes les occurences de x. a. Modifier le tableau en echangeant le contenu des cases 1 et i, et en laissant le reste inchange. b. Ecrire sur la sortie standard exactement x sur 4 caracteres, cale a droite, suivi de i sur 3 caracteres, cale a droite, (soit au total 7 caracteres), suivis immediatement d'un retour charriot, puis sur la ligne suivante le tableau dans l'ordre d'entree (sauf que les deux entiers ont ete echanges), chaque entier sur exactement 4 caracteres, cale a droite, le dernier suivi immediatement d'un retour charriot. Exemple : (les blancs ne sont pas representes) a. input : 1 2 -33 0 -4 7 -98 997 -3 -4 output : -3 9 -3 2 -33 0 -4 7 -98 997 1 -4 (fin output) b. input : 1 2 3 4 4 4 4 8 9 10 output : 0 (fin output) La semantique du programme en dehors du domaine specifie au point 1 pourra etre absolument quelconque et ne sera pas verifiee. Il est interdit d'utiliser MaxInt. Il est interdit d'utiliser plus de 3 boucles : une pour la lecture, une pour l'ecriture, et une pour le recherche du plus grand negatif. Rappel. Dans l'instruction ``IF a THEN IF b THEN c ELSE d;'' le ``ELSE'' se rapporte au 2eme ``THEN'' ; autrement dit : ``si a et b alors c; si a et non b alors d; si non a alors rien''. Les programmes seront testes automatiquement d'une part, mais il sera aussi verifie que le programme est ecrit de maniere elegante, qu'il procede bien comme specifie dans l'enonce, et que les regles de presentation (indentation, noms de variables, etc.) sont bien respectees.