tpdev + evalMadeleine

This commit is contained in:
Alexis WAMSTER 2023-12-01 14:24:23 +01:00
parent 4041397b09
commit 24cc7baddc
29 changed files with 1951 additions and 84 deletions

View File

@ -1,79 +0,0 @@
import java.util.*;
public class Q1Arbre{
private Q1Noeud racine;
public Q1Arbre(){
this.racine = null;
}
public Q1Arbre(int clef){
this.racine = new Q1Noeud(clef);
}
public Q1Arbre(Q1Noeud racine){
this.racine = racine;
}
public void add(Q1Noeud newNoeud){
if (this.racine == null){
this.racine = newNoeud;
}
else{
this.racine.add(newNoeud);
}
}
public void add(int clef){
if (this.racine == null){
this.racine = new Q1Noeud(clef);
}
else{
this.racine.add(clef);
}
}
private Q1Noeud plusPetit(){
if (this.racine != null){
Q1Noeud minimum = this.racine;
while (minimum.getPetit() != null){
minimum = minimum.getPetit();
}
return minimum;
}
return this.racine;
}
private Q1Noeud plusGrand(){
if (this.racine != null){
Q1Noeud maximum = this.racine;
while (maximum.getPetit() != null){
maximum = maximum.getPetit();
}
return maximum;
}
return this.racine;
}
private Q1Noeud suivant(int clef){
if (this.racine != null){
Q1Noeud maximum = this.racine;
while (maximum.getPetit() != null){
maximum = maximum.getPetit();
}
return maximum;
}
return this.racine;
}
public void affichage(){
if (this.racine != null){
Q1Noeud plusPetit = this.racine;
while (plusPetit.getPetit() != null){
plusPetit = plusPetit.getPetit();
}
System.out.print(plusPetit);
while ()
}
}
}

Binary file not shown.

View File

@ -0,0 +1,37 @@
public class Q1Arbre{
private Q1Noeud racine;
public Q1Arbre(){
this.racine = null;
}
public Q1Arbre(int clef){
this.racine = new Q1Noeud(clef);
}
public void add(int clef){
if (this.racine == null){
this.racine = new Q1Noeud(clef);
}
else{
this.racine.add(clef);
}
}
private void parcoursProfondeur(Q1Noeud noeud){
if (noeud != null){
if (noeud.getPetit() != null){
parcoursProfondeur(noeud.getPetit());
}
System.out.print(noeud + " ");
if (noeud.getGrand() != null){
parcoursProfondeur(noeud.getGrand());
}
}
}
public void affichage(){
this.parcoursProfondeur(this.racine);
System.out.println();
}
}

Binary file not shown.

View File

@ -1,6 +1,3 @@
import java.util.*;
import java.io.*;
public class Q1Main{
public static void main(String[] args){

Binary file not shown.

View File

@ -1,5 +1,3 @@
import java.util.*;
public class Q1Noeud{
private int clef;
private Q1Noeud petit;
@ -61,6 +59,42 @@ public class Q1Noeud{
}
}
public Q1Noeud suivant(int clef){
if (clef != this.clef){
Q1Noeud next = null;
if (clef < this.clef){
if (this.petit != null){
next = this.petit.suivant(clef);
}
else{
System.out.print(" 1)"+this);
return this;
}
}
if (clef > this.clef){
if (this.grand != null){
next = this.grand.suivant(clef);
}
else{
System.out.print(this);
return this;
}
}
if (next == null){
System.out.print(" 2)"+this);
return this;
}
else{
System.out.print(" 3)"+next);
return next;
}
}
else{
System.out.print(" 4)"+this.getGrand());
return this.getGrand();
}
}
public Q1Noeud getPetit(){
return this.petit;
}

View File

@ -0,0 +1,72 @@
public class Q2Arbre{
private Q2Noeud racine;
public Q2Arbre(){
this.racine = null;
}
public Q2Arbre(int clef, String identifiant, String motDePasse){
this.racine = new Q2Noeud(clef, identifiant, motDePasse);
}
public void add(int clef, String identifiant, String motDePasse){
if (this.racine == null){
this.racine = new Q2Noeud(clef, identifiant, motDePasse);
}
else{
this.racine.add(clef, identifiant, motDePasse);
}
}
public Q2Noeud get(int clef){
if (this.racine != null){
return this.racine.get(clef);
}
return null;
}
public boolean remove(int clef){
if (this.racine != null){
System.out.println("remove");
Q2Noeud pereDeNoeudASuppr = this.racine.getPere(clef);
Boolean fils = pereDeNoeudASuppr.filsIsSmaller(clef);
Q2Noeud noeudASuppr = pereDeNoeudASuppr.getFils(fils);
if (noeudASuppr != null){
if (noeudASuppr.getPetit() == null){
System.out.println("petit");
pereDeNoeudASuppr.setFils(fils, noeudASuppr.getGrand());
return true;
}
else if (noeudASuppr.getGrand() == null){
pereDeNoeudASuppr.setFils(fils, noeudASuppr.getPetit());
return true;
}
else{
Q2Noeud noeudRemplacant = noeudASuppr.getSuivant();
if (noeudRemplacant.getKey() != noeudASuppr.getKey()){
return noeudASuppr.updateAttribut(noeudRemplacant);
}
}
}
}
System.out.println("null2");
return false;
}
private void parcoursProfondeur(Q2Noeud noeud){
if (noeud != null){
if (noeud.getPetit() != null){
parcoursProfondeur(noeud.getPetit());
}
System.out.print(noeud + " ");
if (noeud.getGrand() != null){
parcoursProfondeur(noeud.getGrand());
}
}
}
public void affichage(){
this.parcoursProfondeur(this.racine);
System.out.println();
}
}

View File

@ -0,0 +1,57 @@
import java.util.*;
public class Q2Main{
public static void main(String[] args){
HashMap<String,Integer> dicoId = new HashMap<>();
Q2Arbre arbre = new Q2Arbre();
Scanner scanneur = new Scanner(System.in);
boolean programmeEnCours = true;
int numUser = 0;
while(programmeEnCours){
String[] mots = scanneur.nextLine().split(" ");
if (mots[0].equals("add") && mots.length == 3){
dicoId.put(mots[1], numUser);
arbre.add(numUser, mots[1], mots[2]);
numUser ++;
System.out.println("Utilisateur \""+mots[0]+"\" ajoute");
}
else if (mots[0].equals("auth") && mots.length == 3){
try{
int clefArbre = dicoId.get(mots[1]);
if (arbre.get(clefArbre).getMotDePasse().equals(mots[2])){
System.out.println("Utilisateur \""+mots[1]+"\" reconnu");
}
else{
throw(new NullPointerException("Utilisateur \""+mots[1]+"\" non reconnu"));
}
}
catch(NullPointerException e){
System.out.println("Utilisateur \""+mots[1]+"\" non reconnu");
}
}
else if (mots[0].equals("del") && mots.length == 2){
try{
int clefArbre = dicoId.get(mots[1]);
if (arbre.remove(clefArbre)){
System.out.println("Utilisateur \""+mots[0]+"\" retire");
}
else{
throw(new NullPointerException("Utilisateur \""+mots[1]+"\" non retire"));
}
}
catch(NullPointerException e){
System.out.println("Utilisateur \""+mots[1]+"\" non retire");
}
}
else if (mots[0].equals("quit") && mots.length == 1){
programmeEnCours = false;
}
else{
System.out.println("operation incorrect ! Voici les operations possibles :\n- add <user> <p@ssW0rd> \n- auth <user> <p@ssW0rd>\n- del <user>\n- quit");
}
}
scanneur.close();
arbre.affichage();
}
}

View File

@ -0,0 +1,169 @@
public class Q2Noeud{
private int clef;
private Q2Noeud petit;
private Q2Noeud grand;
private String identifiant;
private String motDePasse;
public Q2Noeud(int clef, String identifiant, String motDePasse){
this.clef = clef;
this.identifiant = identifiant;
this.motDePasse = motDePasse;
this.petit = null;
this.grand = null;
}
public int getKey(){
return this.clef;
}
public String getIdentifiant(){
return this.identifiant;
}
public String getMotDePasse(){
return this.motDePasse;
}
public void add(int fils, String identifiant, String motDePasse){
if (fils < this.clef){
if (this.petit == null){
this.petit = new Q2Noeud(fils, identifiant, motDePasse);
}
else{
this.petit.add(fils, identifiant, motDePasse);
}
}
if (fils > this.clef){
if (this.grand == null){
this.grand = new Q2Noeud(fils, identifiant, motDePasse);
}
else{
this.grand.add(fils, identifiant, motDePasse);
}
}
if (fils == this.clef){
this.motDePasse = motDePasse;
this.identifiant = identifiant;
}
}
public Q2Noeud get(int clef){
if (clef < this.clef){
if (this.getPetit() != null){
return this.getPetit().get(clef);
}
return null;
}
if (clef > this.clef){
if (this.getGrand() != null){
return this.getGrand().get(clef);
}
return null;
}
if (clef == this.clef){
return this;
}
return null;
}
public Q2Noeud getPere(int clef){
if (clef < this.clef){
if (this.getPetit() != null){
if (this.getPetit().getKey() == clef){
return this;
}
return this.getPetit().getPere(clef);
}
}
if (clef > this.clef){
if (this.getGrand() != null){
if (this.getGrand().getKey() == clef){
return this;
}
return this.getGrand().getPere(clef);
}
}
return null;
}
public Q2Noeud getPetit(){
return this.petit;
}
public Q2Noeud getGrand(){
return this.grand;
}
public Q2Noeud getFils(Boolean isSmaller){
if (isSmaller == true){
return this.petit;
}
if (isSmaller == false){
return this.grand;
}
return null;
}
public Q2Noeud getSuivant(){
if (this.getGrand() != null){
return this.getGrand().getAvant();
}
return this;
}
public Q2Noeud getAvant(){
if (this.getPetit() != null){
return this.getPetit().getAvant();
}
return this;
}
public boolean setFils(boolean isSmaller, Q2Noeud fils){
if (isSmaller == true){
this.petit = fils;
return true;
}
if (isSmaller == false){
this.grand = fils;
return true;
}
return false;
}
public Boolean filsIsSmaller(int clef){
if (this.petit.getKey() == clef){
return true;
}
if (this.grand.getKey() == clef){
return false;
}
return null;
}
public int getNbFils(){
int nbFils = 0;
if (this.petit != null){
nbFils ++;
}
if (this.grand != null){
nbFils ++;
}
return nbFils;
}
public boolean updateAttribut(Q2Noeud nouveau){
if (nouveau.getKey() > this.petit.getKey() && nouveau.getKey() < this.grand.getKey()){
this.clef = nouveau.getKey();
this.identifiant = nouveau.identifiant;
this.motDePasse = nouveau.motDePasse;
return true;
}
return false;
}
@Override
public String toString(){
return this.clef + " " + this.identifiant + " " + this.motDePasse;
}
}

Binary file not shown.

View File

@ -0,0 +1,11 @@
enum Denomination {
UN,
DEUX,
CINQ,
DIX,
VINGT,
CINQUANTE,
CENT,
DEUX_CENT,
CINQ_CENT
}

View File

@ -0,0 +1,34 @@
public class Individu{
private String nom;
private Liasse fortune;
public Individu(String nom){
this.nom = nom;
this.fortune = new Liasse();
}
public void add(Denomination billet){
this.fortune.addBillet(billet);
}
public void payer(int valeur, Individu vendeur){
// pas le temps
}
public String printFortune(){
String resultat = "";
for (Denomination valeur : Denomination.values()){
resultat += ("billet de "+this.fortune.getValeurBilletMonoliasse(valeur)+" : "+this.fortune.getNbBilletMonoliasse(valeur)+"\n");
}
resultat += ("Total : "+this.fortune.getFortune());
return resultat;
}
public int getFortune(){
return this.fortune.getFortune();
}
public String getNom(){
return this.nom;
}
}

View File

@ -0,0 +1,51 @@
public class Liasse{
private Monoliasse[] listeMonoliasse;
// il faut convertir les enum en int pour un code fonctionnel
public Liasse(){
// double boucle a corriger
int i=0;
for (Denomination valeur : Denomination.values()){
i++;
}
this.listeMonoliasse = new Monoliasse[i];
i=0;
for (Denomination valeur : Denomination.values()){
this.listeMonoliasse[i] = new Monoliasse(valeur, 0);
}
}
public void addBillet(Denomination valeur){
this.listeMonoliasse[valeur].addBillet();
}
public int getValeurBilletMonoliasse(Denomination valeur){
return this.listeMonoliasse[valeur].getValeurBillet();
}
public int getNbBilletMonoliasse(Denomination valeur){
return this.listeMonoliasse[valeur].getCombien();
}
public int getNbBillet(){
int nbBillet=0;
for (Monoliasse monoliasse : this.listeMonoliasse){
nbBillet += monoliasse.getCombien();
}
return nbBillet;
}
public int getFortune(){
int fortune=0;
for (Monoliasse monoliasse : this.listeMonoliasse){
fortune += monoliasse.getValeurMonoliasse();
}
return fortune;
}
public int getFortuneMonoliasse(Denomination valeur){
return this.listeMonoliasse[valeur].getValeurMonoliasse();
}
}

View File

@ -0,0 +1,17 @@
public class Main{
public static void main(String[] args){
Individu titi = new Individu("titi");
titi.add(Denomination.CINQ);
titi.add(Denomination.CINQ);
titi.add(Denomination.CINQ);
titi.add(Denomination.DIX);
titi.add(Denomination.DIX);
System.out.println(titi.getNom()+" a : \n"+titi.printFortune());
Individu toto = new Individu("toto");
toto.add(Denomination.UN);
toto.add(Denomination.UN);
toto.add(Denomination.UN);
toto.add(Denomination.DIX);
System.out.println(toto.getNom()+" a : \n"+toto.printFortune());
}
}

View File

@ -0,0 +1,66 @@
public class Monoliasse{
private Denomination valeur;
private int combien;
public Monoliasse(){
this.valeur = null;
this.combien = 0;
}
public Monoliasse(Denomination valeur){
this.valeur = valeur;
this.combien = 1;
}
public Monoliasse(Denomination valeur, int combien){
this.valeur = valeur;
this.combien = combien;
}
public void addBillet(){
this.combien ++;
}
public void removeBillet(){
this.combien --;
}
public int getCombien(){
return this.combien;
}
public int getValeurMonoliasse(){
return this.getValeurBillet()*this.combien;
}
public int getValeurBillet(){
if (valeur == Denomination.UN){
return 1;
}
if (valeur == Denomination.DEUX){
return 2;
}
if (valeur == Denomination.CINQ){
return 5;
}
if (valeur == Denomination.DIX){
return 10;
}
if (valeur == Denomination.VINGT){
return 20;
}
if (valeur == Denomination.CINQUANTE){
return 50;
}
if (valeur == Denomination.CENT){
return 100;
}
if (valeur == Denomination.DEUX_CENT){
return 200;
}
if (valeur == Denomination.CINQ_CENT){
return 500;
}
return 0;
}
}

View File

@ -0,0 +1,38 @@
public class Billet{
private Denomination valeur;
public Billet(Denomination valeur){
this.valeur = valeur;
}
public int getValeur(){
if (valeur == Denomination.UN){
return 1;
}
if (valeur == Denomination.DEUX){
return 2;
}
if (valeur == Denomination.CINQ){
return 5;
}
if (valeur == Denomination.DIX){
return 10;
}
if (valeur == Denomination.VINGT){
return 20;
}
if (valeur == Denomination.CINQUANTE){
return 50;
}
if (valeur == Denomination.CENT){
return 100;
}
if (valeur == Denomination.DEUX_CENT){
return 200;
}
if (valeur == Denomination.CINQ_CENT){
return 500;
}
return 0;
}
}

View File

@ -0,0 +1,11 @@
enum Denomination {
UN,
DEUX,
CINQ,
DIX,
VINGT,
CINQUANTE,
CENT,
DEUX_CENT,
CINQ_CENT
}

View File

@ -0,0 +1,34 @@
import java.util.*;
public class Individu{
private String nom;
private List<Billet> fortune;
public Individu(String nom){
this.nom = nom;
this.fortune = new ArrayList<>();
}
public boolean add(Billet billet){
return this.fortune.add(billet);
}
public void payer(int valeur, Individu vendeur){
// to do (il faut pouvoir trier la liste du plus grand au plus petit)
// on pourrait alors utiliser un dictionnaire plutot qu'une liste pour avoir chaque billet en clef et le nombre de fois ou il est present en valeur.
// ce dictionnaire serait devrait etre trier.
// cette methode doit etre recursive pour que chaque individus se rembourse plusieurs fois jusqu'a ce qu'il ne puisse plus
}
public int getFortune(){
int total = 0;
for (Billet billet : fortune){
total += billet.getValeur();
}
return total;
}
public String getNom(){
return this.nom;
}
}

View File

@ -0,0 +1,17 @@
public class Main{
public static void main(String[] args){
Individu titi = new Individu("titi");
titi.add(new Billet(Denomination.CINQ));
titi.add(new Billet(Denomination.CINQ));
titi.add(new Billet(Denomination.CINQ));
titi.add(new Billet(Denomination.DIX));
titi.add(new Billet(Denomination.DIX));
System.out.println(titi.getNom()+" a : "+titi.getFortune());
Individu toto = new Individu("toto");
toto.add(new Billet(Denomination.UN));
toto.add(new Billet(Denomination.UN));
toto.add(new Billet(Denomination.UN));
toto.add(new Billet(Denomination.DIX));
System.out.println(toto.getNom()+" a : "+toto.getFortune());
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff