diff --git a/TP_DEV3.2/Piles/Arithmetik.class b/TP_DEV3.2/Piles/Arithmetik.class new file mode 100644 index 0000000..caa2355 Binary files /dev/null and b/TP_DEV3.2/Piles/Arithmetik.class differ diff --git a/TP_DEV3.2/Piles/Arithmetik.java b/TP_DEV3.2/Piles/Arithmetik.java new file mode 100644 index 0000000..ad29ed2 --- /dev/null +++ b/TP_DEV3.2/Piles/Arithmetik.java @@ -0,0 +1,51 @@ +import java.util.Stack; + +public class Arithmetik { + + public static void main(String[] args) { + + // Exemple : 18 6 1 2 + 9 + / + 8 7 - * + // String[] args = {"18", "6", "1", "2", "+", "9", "+", "/", "+", "8", "7", "-", "*"}; + + Pile pile = new Pile<>(); + + for (String element : args) { + if (estNombre(element)) { + // Si c’est un nombre, on le met dans la pile + pile.push(Integer.parseInt(element)); + } else { + // Sinon c’est un opérateur on dépile 2 valeurs + int b = pile.pop(); + int a = pile.pop(); + int resultat = calculer(a, b, element); + // On empile le résultat + pile.push(resultat); + } + } + + // À la fin, il reste le résultat final dans la pile + System.out.println("Résultat = " + pile.pop()); + } + + // Vérifie si une chaîne est un nombre + public static boolean estNombre(String s) { + try { + Integer.parseInt(s); + return true; + } catch (NumberFormatException e) { + return false; + } + } + + // Calcule a (op) b + public static int calculer(int a, int b, String op) { + switch (op) { + case "+": return a + b; + case "-": return a - b; + case "*": return a * b; + case "/": return a / b; + default: + throw new IllegalArgumentException("Opérateur inconnu : " + op); + } + } +} diff --git a/TP_DEV3.2/Piles/Arithmetique.class b/TP_DEV3.2/Piles/Arithmetique.class new file mode 100644 index 0000000..fe97499 Binary files /dev/null and b/TP_DEV3.2/Piles/Arithmetique.class differ diff --git a/TP_DEV3.2/Piles/Pile.class b/TP_DEV3.2/Piles/Pile.class new file mode 100644 index 0000000..1b5e1bf Binary files /dev/null and b/TP_DEV3.2/Piles/Pile.class differ diff --git a/TP_DEV3.2/Piles/Pile.java b/TP_DEV3.2/Piles/Pile.java index 8d1abcd..3f870df 100644 --- a/TP_DEV3.2/Piles/Pile.java +++ b/TP_DEV3.2/Piles/Pile.java @@ -1,4 +1,62 @@ -public class Pile { +public class Pile { + +private E[] tab; +private int etage; + +@SuppressWarnings("unchecked") +public Pile(){ + + +tab = (E[]) new Object[50]; +etage=0; + + + +} + + +public void push(E element){ +if(etage == tab.length){ + + +System.out.println("Erreur la pile est pleine !"); +return; + + +} + +tab[etage]=element; +etage++; + + + + +} + + +public E pop(){ +if(empty()){ + +System.out.println("Erreur : la pile est vide !"); +return null; + +} + +etage--; +E valeur = tab[etage]; +tab[etage]=null; +return valeur; + +} + +public boolean empty(){ + + + + return etage==0; + + +} @@ -8,13 +66,4 @@ public class Pile { - - - - - - - - - } \ No newline at end of file