TP sur les piles ajout
This commit is contained in:
BIN
TP_DEV3.2/Piles/Arithmetik.class
Normal file
BIN
TP_DEV3.2/Piles/Arithmetik.class
Normal file
Binary file not shown.
51
TP_DEV3.2/Piles/Arithmetik.java
Normal file
51
TP_DEV3.2/Piles/Arithmetik.java
Normal file
@@ -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<Integer> 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
TP_DEV3.2/Piles/Arithmetique.class
Normal file
BIN
TP_DEV3.2/Piles/Arithmetique.class
Normal file
Binary file not shown.
BIN
TP_DEV3.2/Piles/Pile.class
Normal file
BIN
TP_DEV3.2/Piles/Pile.class
Normal file
Binary file not shown.
@@ -1,4 +1,62 @@
|
|||||||
public class Pile {
|
public class Pile<E> {
|
||||||
|
|
||||||
|
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 {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user