Je suis nouveau sur Eiffel et j'essaie d'utiliser la classe LINKED_LIST pour organiser des instances d'autres classes "MONOMIO" que j'ai créées. J'ai ajouté une fonction pour la commande de ces éléments et j'utilise les fonctions remove et le mouvement du curseur et quand j'essaie d'exécuter le code, il déclenche une exception disant que les objets contenus devraient être lisibles et inscriptibles. Je voudrais savoir comment le faire, voici ma classe:Eiffel - Comment rendre mes cours lisibles?
class
MONOMIO
feature --Initialization
make (coef:INTEGER; expX:INTEGER; expY:INTEGER)
do
coeficiente := coef
exponenteX := expX
exponenteY := expY
end
feature
evaluar(valX: INTEGER; valY: INTEGER): REAL_64
do
Result := coeficiente*(valX^exponenteX)*(valY^exponenteY)
end;
coeficiente: INTEGER;
exponenteX: INTEGER;
exponenteY: INTEGER;
feature --setter
set_coeficiente(val: INTEGER)
do
coeficiente := val
end;
end
Je pense que l'exception pose à cause de cette caractéristique que je l'ai fait pour une classe qui a comme caractéristique la LINKED_LIST [MONOMIO] et il est appelé "contenido":
simplificar
local
tamanio_polinomio: INTEGER -- Número de monomios que tiene el polinomio
contador: INTEGER
monomio_a_comparar: MONOMIO -- Auxiliar
coeficiente_total:INTEGER -- Auxiliar
indice_monomio_en_revision:INTEGER
do
from
contenido.start
indice_monomio_en_revision := 0
tamanio_polinomio := contenido.count
until
indice_monomio_en_revision = tamanio_polinomio
loop
contenido.start
contenido.move (indice_monomio_en_revision)
monomio_a_comparar := contenido.item
from
contador := indice_monomio_en_revision
coeficiente_total := monomio_a_comparar.coeficiente
contenido.forth
until
contador = tamanio_polinomio
loop
if
(monomio_a_comparar.exponentex = contenido.item.exponentex) and
(monomio_a_comparar.exponentey = contenido.item.exponentey)
then
coeficiente_total := coeficiente_total + contenido.item.coeficiente
contenido.remove -- Mueve el cursor a la derecha
tamanio_polinomio := tamanio_polinomio - 1
contador := contador - 1
else
if
not contenido.islast
then
contenido.forth
end
end
contador := contador + 1
end
contenido.start
contenido.move (indice_monomio_en_revision)
contenido.item.set_coeficiente (coeficiente_total)
indice_monomio_en_revision := indice_monomio_en_revision + 1
end
end;
J'espère que n'importe qui peut m'aider avec ce problème. Merci.
La classe semble OK, je suppose que le problème est dans le code qui fonctionne avec LINKED_LIST. Pouvez-vous le montrer et nous dire quelle est l'erreur exacte que vous obtenez? Est-ce une erreur de compilation ou une erreur d'exécution? –
@AlexanderKogtenkov C'est une exception soulevée lors de l'exécution, elle indique "lisible: PRECONDITION_VIOLATION raised" et cela est dû à une exigence de LINKED_LIST qui demande que l'objet contenu soit lisible – GiaccomoU
Voulez-vous afficher le code qui mène à l'exception, s'il vous plaît? ('readable' est un nom de sous-clause precondition, il n'est pas lié à votre classe' MONOMIO'.) –