From: Jérôme Benoit Date: Sun, 4 Mar 2018 18:28:06 +0000 (+0100) Subject: Fix the Compactable implementation in Entiers and Listes classes. X-Git-Url: https://git.piment-noir.org/?p=TP_POO.git;a=commitdiff_plain;h=22758baf926b8b833ce6a38566eb157e13fbd3fb Fix the Compactable implementation in Entiers and Listes classes. Image class need to be tested. Signed-off-by: Jérôme Benoit --- diff --git a/TP2/Entiers.java b/TP2/Entiers.java index 7d55c42..b690d10 100644 --- a/TP2/Entiers.java +++ b/TP2/Entiers.java @@ -105,8 +105,12 @@ class Entiers extends Structure { } public void compacter(int nElements) { - // Remove the last nElements - current_size -= nElements; + if (current_size - nElements > 0) { + // Remove the last nElements + current_size -= nElements; + } else { + current_size = 0; + } } } diff --git a/TP2/Liste.java b/TP2/Liste.java index 201d875..ceab499 100644 --- a/TP2/Liste.java +++ b/TP2/Liste.java @@ -143,19 +143,20 @@ public class Liste extends Structure { return; } else if (nElements == 0) { return; - } else if (headNode.getNext() == null) { + } else if (headNode != null && headNode.getNext() == null) { headNode = null; } else { // We have at least 2 nodes in the linked list - IntNode nodeCursor = headNode.getNext(); + IntNode nodeCursor = headNode; int i = 0; - // Go to the node at the nElements + 1 place - while (i < nElements - 1 && nodeCursor.getNext() != null) { + // Go to the node at the nElements place + while (i < nElements -1 && nodeCursor.getNext() != null && nElements > 1) { nodeCursor = nodeCursor.getNext(); i++; } // Set the nElements + 1 node as the root node - setHeadNode(nodeCursor); + // It might be null + setHeadNode(nodeCursor.getNext()); } } diff --git a/TP2/Main.java b/TP2/Main.java index 49473b4..85c21fe 100644 --- a/TP2/Main.java +++ b/TP2/Main.java @@ -98,9 +98,55 @@ class Main { } + public static void main4() { + + Structure[] structure = new Structure[10]; + + Point p1 = new Point(1, 2); + Point p2 = new Point(2, 7); + Point p3 = new Point(1, 5); + Point p4 = new Point(3, 1); + + Segment segment1 = new Segment(p1, p2); + Segment segment2 = new Segment(p3, p4); + Cercle cercle = new Cercle(p3, 5.5); + Image image = new Image(); + image.ajouter(segment1); + image.ajouter(segment2); + image.ajouter(cercle); + + Entiers entiers = new Entiers(5); + entiers.inserer(3); + entiers.inserer(1); + entiers.inserer(4); + + Liste liste = new Liste(); + liste.inserer(3); + liste.inserer(1); + liste.inserer(5); + liste.inserer(4); + + for (int i = 0; i < 10; i++) { + structure[i] = entier; + structure[i].afficher(); + structure[i].compacter(1); + structure[i].afficher(); + + structure[i] = liste; + structure[i].afficher(); + structure[i].compacter(1); + structure[i].afficher(); + + structure[i] = image; + structure[i].afficher(); + structure[i].compacter(1); + structure[i].afficher(); + } + } + public static void main(String[] args) { - main3(); + main4(); }