file mais dernier marche pas

This commit is contained in:
2024-11-13 16:19:54 +01:00
parent 5903d26b48
commit d6a9265998
14 changed files with 316 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1,56 @@
public class Arithmetique {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("Veuillez fournir une expression en notation polonaise inversée.");
return;
}
// Utilisation de l'implémentation FileTableau pour la file
File<Integer> queue = new FileTableau<>();
try {
for (String token : args) {
switch (token) {
case "+":
// Addition
queue.ajouter(queue.retirer() + queue.retirer());
break;
case "-":
// Soustraction (attention à l'ordre)
int b = queue.retirer();
int a = queue.retirer();
queue.ajouter(a - b);
break;
case "x":
// Multiplication
queue.ajouter(queue.retirer() * queue.retirer());
break;
case "/":
// Division (attention à l'ordre)
b = queue.retirer();
a = queue.retirer();
if (b == 0) {
throw new ArithmeticException("Division par zéro");
}
queue.ajouter(a / b);
break;
default:
// Si ce n'est pas un opérateur, alors c'est un nombre
queue.ajouter(Integer.parseInt(token));
break;
}
}
// Le résultat final doit être le seul élément restant dans la file
if (queue.taille() == 1) {
System.out.println("= " + queue.retirer());
} else {
System.out.println("Erreur : Expression incorrecte.");
}
} catch (Exception e) {
System.out.println("Erreur lors de l'évaluation de l'expression : " + e.getMessage());
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,6 @@
public interface File<E> {
void ajouter(E element); // Ajoute un élément en fin de la file
E retirer(); // Retire et retourne l'élément en tête de la file
int taille(); // Retourne la taille de la file
boolean estVide(); // Vérifie si la file est vide
}

Binary file not shown.

View File

@@ -0,0 +1,41 @@
public class FileTableau<E> implements File<E> {
private static final int CAPACITE_INITIALE = 20;
private E[] elements;
private int taille = 0;
private int debut = 0;
private int fin = 0;
@SuppressWarnings("unchecked")
public FileTableau() {
elements = (E[]) new Object[CAPACITE_INITIALE]; // Création du tableau initial
}
@Override
public void ajouter(E element) {
elements[fin] = element;
fin = (fin + 1) % elements.length;
taille++;
}
@Override
public E retirer() {
if (estVide()) {
throw new IllegalStateException("La file est vide");
}
E element = elements[debut];
elements[debut] = null; // Supprime la référence pour éviter les fuites de mémoire
debut = (debut + 1) % elements.length;
taille--;
return element;
}
@Override
public int taille() {
return taille;
}
@Override
public boolean estVide() {
return taille == 0;
}
}