import java.util.*; import java.io.File; import java.io.FileNotFoundException; public class EnsembleEntiers { private static int CARDMAX=100000; // dimension maximale du tableau private int cardinal; // stockage du cardinal de l'objet private int ensTab[]; // stockage des valeurs public static int getCardMax(){ return EnsembleEntiers.CARDMAX; } public EnsembleEntiers() { // creation d'un ensemble vide this.ensTab = new int[this.CARDMAX]; this.cardinal=0; } public EnsembleEntiers (int mesValeurs[]) { this(); // invoque le constructeur sans parametre for(int i=0; i < mesValeurs.length; i++) { this.ajoutElt(mesValeurs[i]); } } public EnsembleEntiers (EnsembleEntiers e) { this(); for(int i=0; i < e.cardinal; i++) { this.ensTab[i] = e.ensTab[i]; } this.cardinal = e.cardinal; } public EnsembleEntiers (String mesValeurs) { this(); // invoque le constructeur sans parametre String str[] = mesValeurs.split(" "); for (int i = 0; i < str.length; i++) { this.ajoutElt(Integer.parseInt(str[i])); } } public EnsembleEntiers (File fichier) { this(); // invoque le constructeur sans parametre // File fichier=new File(nomFic); try { Scanner sc = new Scanner(fichier); while(sc.hasNextInt()) { this.ajoutElt(sc.nextInt()); } } catch(FileNotFoundException e){ System.out.println(e); System.exit(0); } } public String toString () { String s="{"; for (int i=0; i < this.cardinal-1; i++) { s = s + this.ensTab[i] + ","; } if (this.cardinal > 0) { s = s + this.ensTab[this.cardinal-1]; } s = s + "}"; return s; } /* ==================================================================== */ public int cardinal() { return this.cardinal; } /** @param x est l'element a chercher * @return l'indice de l'element si positif ; -1 si absent */ private int contientPratique (int x) { int i = 0; boolean trouve = false; while (i < this.cardinal() && !trouve){ trouve = (this.ensTab[i]==x); i++; } if (trouve) return i-1; else return -1; } public boolean contient (int x) { return ( (contientPratique(x)) >= 0 ); } /** * @param x est un element a ajouter * ajoute x a l'objet courant */ private void add(int x) { this.ensTab[this.cardinal]=x; this.cardinal++; } /** * @return booleen indiquant si l'ensemble est vide */ public boolean vide() { return (this.cardinal == 0); } /** * @return booleen indiquant si le tableau permettant de stocker l'ensemble est plein */ public boolean deborde() { return (this.cardinal == this.CARDMAX); } /* ==================================================================== */ /** * @param x est l'entier a chercher dans l'ensemble * @return -1 si this est plein ; 0 si x deja present et pas ajoute ; 1 si x ajoute */ public int ajoutElt(int x) { if (this.deborde()) return -1; else if (this.contient(x)) return 0; else { this.add(x); return 1; } } public static void main(String[] args){ EnsembleEntiers e1 = new EnsembleEntiers(); EnsembleEntiers e2 = new EnsembleEntiers(); Random r = new Random(); int bsup = 20000000; for(int i = 0;i