diff --git a/.classpath b/.classpath index c0b4a16..5a7974b 100644 --- a/.classpath +++ b/.classpath @@ -7,6 +7,6 @@ - + diff --git a/Cours/M313_2020_2021_CM3_Anime.pdf b/Cours/M313_2020_2021_CM3_Anime.pdf new file mode 100644 index 0000000..00bf1cd Binary files /dev/null and b/Cours/M313_2020_2021_CM3_Anime.pdf differ diff --git a/Enoncés/TD/TD3_Liste.pdf b/Enoncés/TD/TD3_Liste.pdf new file mode 100644 index 0000000..8df8549 Binary files /dev/null and b/Enoncés/TD/TD3_Liste.pdf differ diff --git a/Enoncés/TP/TP3_Crible.pdf b/Enoncés/TP/TP3_Crible.pdf new file mode 100644 index 0000000..826c654 Binary files /dev/null and b/Enoncés/TP/TP3_Crible.pdf differ diff --git a/src/TP2/demoTris.java b/src/TP2/demoTris.java deleted file mode 100644 index ffac5be..0000000 --- a/src/TP2/demoTris.java +++ /dev/null @@ -1,68 +0,0 @@ -package TP2; - -import java.util.Arrays; - -public class demoTris { - - int[] tabA = new int[8]; - tabA[0] = 8; - tabA[1] = 4; - tabA[2] = 25; - tabA[3] = 28; - tabA[4] = 13; - tabA[5] = 40; - tabA[6] = 30; - tabA[7] = 23; - - public static void triFusion(int[] numbers) { - mergeSort(numbers, 0, numbers.length); - } - - private static void mergeSort(int[] tab, int min, int max) { - int mid = 0; - if(min != max) { - mid = (min+max)/2; - - mergeSort(tab, min, mid); - mergeSort(tab, mid+1, max); - - int[] tmpTab = new int[max-min+1]; - int[] t1 = Arrays.copyOfRange(tab, min, mid+1); - int[] t2 = Arrays.copyOfRange(tab, mid+1, max); - - Fusion(t1, t2, tmpTab); - - for(int i=0; i < max-min; i++) { - tab[min+i] = tmpTab[i]; - } - } - } - - private static void Fusion(int[] tab1, int[] tab2, int[] tab) { - int i = 0; int i1 = 0; int i2 = 0; - - while(i1 < tab1.length && i2 < tab2.length) { - if(tab1[i1] < tab2[i2]) { - tab[i] = tab1[i1]; - i++;i1++; - } else { - tab[i] = tab2[i2]; - i++;i2++; - } - } - - while(i1 l = new Liste(); + + public Cribble(int nb) { + this.l.remplirListe(nb); + } + + public Liste getList() { + return this.l; + } + + @Override + public String toString() { + return this.getList().toString(); + } + + public static void main(String[] args) { + Cribble c = new Cribble(20); + System.out.println(c.toString()); + } + +} diff --git a/src/TP3/Liste.java b/src/TP3/Liste.java new file mode 100644 index 0000000..befb75b --- /dev/null +++ b/src/TP3/Liste.java @@ -0,0 +1,237 @@ +package TP3; + +import java.lang.reflect.Array; +import java.util.Iterator; + + +/** + * An empty list is an instance of class {@code Liste} where {@code head=queue=null}. + * A list containing one element {@code v} is represented by 2 objects of {@code Liste} where : + *
    + *
  • {@code v} is stored in {@code head} attribute of first object
  • + *
  • queue attribute of first object refers to second {@code Liste} object where head=queue=null.
  • + *
+ * @author Dr. Denis PALLEZ
+ * {@link http://denispallez.i3s.unice.fr} + * @version 2017-2018 + */ + +public class Liste { // + private E tete; + private Liste queue; + + public Liste() { + tete = null; + queue = null; + } + public Liste(E n, Liste suivante) { + tete=n ; + queue = suivante ; + } + public E getTete() { + return tete; + } + public Liste getQueue() { + return queue; + } + public boolean estVide() { + return (tete==null) ; + } + + @Override + public String toString() { + if (estVide()){ + return "null"; + } + else { + return "("+getTete()+ ", " + getQueue()+")"; + } + } + + public int taille() { + if (estVide()) + return 0; + else + return 1 + queue.taille(); + } + public boolean contient(E v) { + if(estVide()) { + return false; + } else if(this.tete == v) { + return true; + } else { + return this.getQueue().contient(v); + } + } + public Liste ajouteTete(E v) { + if (this.estVide()) + return new Liste(v,new Liste()) ; + else + return new Liste(v,this.getQueue().ajouteTete(getTete())) ; + } + + public void ajouteTeteProc(E v) { + if(this.estVide()) { + this.tete = v; + this.queue = null; + } else { + Liste tmp = new Liste(this.getTete(), this.getQueue()); + this.tete = v; + this.queue = tmp; + } + } + + public Liste ajouteQueue(E v) { + if(this.estVide()) { + return new Liste(v, new Liste()); + } else { + return new Liste(this.tete, queue.ajouteQueue(v)); + } + } + + public Liste suppTete() { + if (estVide()) + return new Liste() ; + else if (this.getQueue().estVide()) + return new Liste() ; + else + return this.getQueue().getQueue().ajouteTete(getQueue().getTete()) ; + } + + public void ajouteQueueProc(E v) { + if (estVide()) { + tete = v; + queue = new Liste() ; + } + else + queue.ajouteQueueProc(v); + } + + public Liste supprime(E v) { + Liste l = new Liste(); + //TO DO + return l; + } + + + public void suppTeteproc() { + //TO DO + } + + public Liste suppQueue() { + if(this.estVide()) { //cas vide + return new Liste(); + } else if(this.getQueue().estVide()) {//cas avec un seul élément + return new Liste(); + } else { //il faut au moins copier la tête caril y a un autre élément derrière + return new Liste(this.getTete(), this.getQueue().suppQueue()); + } + } + + public void suppQueueProc() { + if (estVide()) {} + else if (getQueue().estVide()) { + tete=null; + queue.finalize(); + queue=null ; + } + else getQueue().suppQueueProc(); + } + + public E get(int pos) { + if (estVide()) + return null ; + else if (pos==0) return tete ; + else return getQueue().get(pos-1) ; + } + + public void efface() { + //TO DO + } + + public Liste ajouteTous(Liste l) { + Liste ll = new Liste(); + //TO DO + return ll; + } + + @SuppressWarnings("unchecked") + @Override + public boolean equals(Object o) { + if (o instanceof Liste) { + Liste param = (Liste)(o) ; + if (estVide() && param.estVide()) + return true; + else if (!estVide() && !param.estVide()) { + if (tete.equals(param.tete)) + return queue.equals(param.queue) ; + else return false ; + } + else return false ; + + } + return false ; + } + + public void supprimeProc(E v) { + //TO DO + } + + public Liste supprimeTous(E v) { + Liste l = new Liste(); + //TO DO + return l; + } + + public void supprimeTousProc(E v) { + //TO DO + } + + public Liste inverse() { + Liste l = new Liste(); + //TO DO + return l; + } + + public void inverseProc() { + //TO DO + } + + public void finalize() { + efface() ; + } + + public E[] toArray() { + Liste l=this ; + @SuppressWarnings("unchecked") + E[] array = (E[])Array.newInstance(tete.getClass(),l.taille()) ; + int i=0 ; + while (!(l.estVide())) { + array[i]=l.tete; + l=l.queue; + i++ ; + } + return array ; + } + + public Liste delMultiple(int n) { + if(!this.estVide()) { + if((Integer)this.getTete()%n == 0) { + return this.getQueue().delMultiple(n); + } else { + return new Liste((Integer)this.getTete(), this.getQueue().delMultiple(n)); + } + } else { + return new Liste(); + } + } + + public Liste remplirListe(int n) { + if(n <= 1) { + return new Liste(); + } else { + return remplirListe(n-1).ajouteQueue(n); + } + } + +} diff --git a/src/TP3/MethodesListes.java b/src/TP3/MethodesListes.java new file mode 100644 index 0000000..9970992 --- /dev/null +++ b/src/TP3/MethodesListes.java @@ -0,0 +1,5 @@ +package TP3; + +public class MethodesListes { + +} diff --git a/tests/TP2/TrisTestEtudiant.java b/tests/TP2/TrisTestEtudiant.java index c5b102c..079299d 100644 --- a/tests/TP2/TrisTestEtudiant.java +++ b/tests/TP2/TrisTestEtudiant.java @@ -73,7 +73,7 @@ public class TrisTestEtudiant { } public static void triRapide(int[] numbers) { - quickSort(); + //quickSort(); } private static void exchange(int[] t, int i, int j) { @@ -145,6 +145,11 @@ public class TrisTestEtudiant { quickSort(numbers, i, max); } + private static int[] partitionnerPivot(int[] numbers, int i, int j, int pivot) { + // TODO Auto-generated method stub + return null; + } + @Before public void setUp() throws Exception { }