Constraint_error : puiss4.adb:126 index check failed - Ada - Programmation
Marsh Posté le 17-04-2004 à 10:59:38
c'est quoi exactement la ligne de l'erreur ?
Tu as dû tenter d'affecter une valeur trop grande dans une variable d'un type qui n'admet que des valeurs plus petites.
Marsh Posté le 07-05-2004 à 13:12:13
Au passage, tu peux aussi corriger quelques erreurs de programmation qui pourraient bien expliquer ton exception.
En Ada, les tableaux connaissent leur propre longueur, alors il est inutile de se trimballer avec les tailles à côté :
Code :
|
Mes leçons d'Ada remontent à très loin, mais ce code devrait être correct.
De plus, il est toujours préférable de ne pas mettre en "in out" un paramètre qu'on ne modifie pas, donc ici, "Puis4" n'étant pas modifié, c'est paramètre en "in". L'avantage, c'est que derrière, avec ce genre d'informations, le compilateur peut effectuer ses propres optimisations sur le code qu'il génère, sans que tu aies à t'en préoccuper.
Marsh Posté le 07-05-2004 à 13:21:58
Après avoir parcouru ton code, j'ai trouvé au moins un cas typique où tu es sûr de te récupérer une Constraint_Error.
En Ada, quand tu écris "if A and B then", Ada évalue toujours A et B. Il ne fait pas d'évaluation booléenne optimisée comme en C, par exemple, qui n'évalue B que si A est vrai (en se basant sur le fait que si A est faux, l'expression globale sera nécessairemnt fausse).
Ceci dit Ada offre la possibilité de faire une évaluation optimisée des expressions booléennes, à condition d'utiliser les opérateurs "and then" et "or else" à la place de "and" et "or".
Ainsi, dans Horizontal_4_X, quand tu écris :
Code :
|
l'exception Constraint_Error sera toujours levée si m <= 3 puisque "puis4(p, m-3)" est toujours évalué, et que dans ce cas, tu essaies d'accéder à un index négatif du tableau.
Pour éviter ça, il te faut écrire :
Code :
|
Dernier commentaire sur ton code : je trouve qu'il contient beaucoup de code quasi dupliqué. C'est dommage.
Marsh Posté le 17-04-2004 à 10:01:30
Salut
on est en ce moment de faire un puissance4 pour un projet en dut mais on a cette erreur a l'execution : Constraint_error : puiss4.adb:126 index check failed
je vous met le code source :
ps : on est vraiment des noobs donc si ça se trouve c'est une erreur toute conne, mais la on est bloqué
merci d'avance pour votre aide !
Dmey et son binome.