/** * Solution des exercices du TP6 * Chaque methode qui represente un exercice aura le numero * de cet exercice dans le commentaire. */ public class Tableau { int taille; double j; int [] contenu; /** * Constructeur de tableau aleatoire * dont les valeurs seront comprises entre 1 et 100 * @param taille La taille du tableau. */ public Tableau (int n) { taille=n; contenu=new int [taille]; for (int i=0 ; i < taille ; i++) { contenu[i] = (int)(100 * Math.random()+1); } } public Tableau(String tableauChaine[]) { //ca sera utile récupérer les arguments du main taille=tableauChaine.length; contenu=new int[taille]; for (int i=0 ; i < taille ; i++) contenu[i]=Integer.parseInt(tableauChaine[i]); } /** * Constructeur de tableau a partir d'un tableau * existant dont on ne prend les valeurs qu'a partir * de la p-ieme * dont les valeurs seront comprises entre 1 et 100 * @param t tableau ou` prendre les valeurs * @param p element a partir duquel copier */ public Tableau (Tableau t, int p) { taille=t.taille-(p-1); if (taille < 0) taille = 0; contenu=new int [taille]; for (int i=0 ; i < taille ; i++) { contenu[i] = t.contenu[i+(p-1)]; } } /** * Exercice 2.1 * * Methode d'affichage : la methode toString est la * methode par defaut utilisee par System.out.println * @return Le tableau transforme en chaine de caracteres */ public String toString() { if (taille == 0) return "."; else { Tableau t = new Tableau(this, 2); return contenu[0] + " " + t.toString(); } } /** * Exercice 2.2 * * @return le dernier element du tableau courant */ public int dernierElement() { if (taille == 0) // appel de la fonction sur un tableau vide return -1; if (taille == 1) // cas de base return contenu[0]; else { Tableau t = new Tableau(this, 2); return t.dernierElement(); } } /** * Exercice 2.3 * * @return le plus petit element du tableau courant */ public int plusPetitElement() { if (taille == 0) // appel de la fonction sur un tableau vide return -1; if (taille == 1) // cas de base return contenu[0]; else { Tableau t = new Tableau(this, 2); return (Math.min(contenu[0], t.plusPetitElement())); } } /** * Exercice 2.3.1 * * @param t2 * @return concatenation de this et de t2 */ public Tableau concatene(Tableau t2) { if (t2.taille == 0) // cas de base return this; else { Tableau t = new Tableau(taille+1); for (int i = 0 ; i < taille ; i++) t.contenu[i] = contenu[i]; t.contenu[taille] = t2.contenu[0]; Tableau t3 = new Tableau(t2, 2); return (t.concatene(t3)); } } /** * Exercice 2.3.2 * * Les deux tableaux peuvent avoir une taille differente * @param t2 * @return addition terme a terme de this et t2 */ public Tableau additionRec(Tableau t2) { if (taille == 0) // cas de base, this est un tableau vide return t2; // on retourne alors t2 if (t2.taille == 0) // cas de base, t2 est un tableau vide return this; // on retourne alors this // dans les autres cas Tableau t = new Tableau(this, 2); Tableau t3 = new Tableau(t2, 2); Tableau t4 = new Tableau(1); t4.contenu[0] = this.contenu[0] + t2.contenu[0]; return (t4.concatene(t.additionRec(t3))); } /** * Methode principale pour tester tous les autres methodes * @param argv les arguments passe au programme */ public static void main (String argv[]) { Tableau t1=new Tableau(10); Tableau t2=new Tableau(5); System.out.println("Le tableau t1 est : " + t1); System.out.println("Le tableau t2 est : " + t2); System.out.println("Le dernier element de t1 est : " + t1.dernierElement()); System.out.println("Le plus petit element de t1 est : " + t1.plusPetitElement()); System.out.println("La concatenation de t1 et t2 est : " + t1.concatene(t2)); System.out.println("L'addition terme a terme de t1 et t2 est : " + t1.additionRec(t2)); System.exit(0); } }