TP sur les piles ajout

This commit is contained in:
2025-10-23 14:56:55 +02:00
parent 801baf7950
commit 829d7359d7
5 changed files with 110 additions and 10 deletions

Binary file not shown.

View 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 cest un nombre, on le met dans la pile
pile.push(Integer.parseInt(element));
} else {
// Sinon cest 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);
}
}
}

Binary file not shown.

BIN
TP_DEV3.2/Piles/Pile.class Normal file

Binary file not shown.

View File

@@ -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 {
} }