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,13 +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;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user