import java.util.Arrays;


public class Tableaux1 {
	
	public static void main(String[] args) {
		exercice1();
		
		exercice2(new boolean[]{true, false, false, true, true, true, false});

		exercice3(new int[]{7, 2, 4, 7, 11, 7, 14, 7, 2, 17, 17, 17, 17, 16, 5, 3});
		
		exercice4(new int[]{-10, -8, -8, -5, -1, 0, 0, 3, 4, 4, 4, 7, 11, 14, 14, 17});
	
		exercice5();
		
		exercice6();
	}

	/**
	 * Crée un tableau d'entiers de taille aléatoire entre 1 et 100
	 * et le rempli avec des entiers aléatoires entre 1 et 100
	 * @return le tableau d'entiers créé
	 */
	public static int[] exercice1() {
		
		int[] tab = new int[(int) (Math.random()*100)+1];
		for (int i=0 ; i<tab.length ; i++) {
			tab[i]= (int) (Math.random()*100)+1;
		}
		
		System.out.println(Arrays.toString(tab));
		return tab;
	}
	
	/**
	 * Affiche et retourne la proportion d'éléments "true"
	 * dans un tableau de booléens fourni en paramètre
	 * @param tab le tableau de booléen
	 * @return la proprtion d'éléments true
	 */
	public static double exercice2(boolean[] tab) {
		int nbTrue=0;
		// boucle foreach
		for (boolean b : tab) {
			if (b) {
				nbTrue++;
			}
		}
		// boucle for classique
		/*for (int i=0 ; i<tab.length ; i++) {
			if (tab[i];) {
				nbTrue++;
			}
		}*/
		double propTrue = ((double) nbTrue/tab.length);
		System.out.println(propTrue);
		return propTrue;
	}
	
	/**
	 * 
	 * @param tab
	 */
	public static void exercice3(int[] tab) {
		int somme=0;
		int max=tab[0]; // ou Integer.MIN_VALUE
		int nbMax=0;
		int min=tab[0]; // ou Integer.MAX_VALUE
		int nbMin=0;
		for (int e : tab) {
			somme+=e;
			if (max==e) {
				nbMax++;
			}
			else if (max<e) {
				max=e;
				nbMax=1;
			}
			if (min==e) {
				nbMin++;
			} else if (min>e) {
				min=e;
				nbMin=1;
			}
		}
		System.out.println("min : "+min+", et sont nb occ :"+nbMin);
		System.out.println("max : "+max+", et sont nb occ :"+nbMax);
		System.out.println("moyenne : "+(((double) somme)/tab.length));
	}
	
	public static void exercice4(int[] tab) {
		for (int i=1 ; i<tab.length ; i++) {
			for (int v=tab[i-1]+1 ; v<tab[i] ; v++) {
				System.out.print(v+" ");
			}
		}
	}
	
	public static void exercice5() {
		int[] tab = new int[1000];
		for (int i=0 ; i<tab.length ; i++) {
			tab[i]=i+1;
		}
		tab[0]=0;
		
		int i=1;
		while (i<tab.length) {
			int enCours=tab[i];
			for (int j=i+1 ; j<tab.length ; j++) {
				if (tab[j] % enCours == 0) {
					tab[j]=0;
				}
			}
			do {
				i++;
			} while (i<tab.length && tab[i]==0);
		}
		for (int e : tab) {
			if (e!=0) {
				System.out.println(e);
			}
		}
	}	
	
	public static void exercice6() {
		char[] tab = new char[50];
		for (int i=0 ; i<tab.length ; i++) {
			double r = Math.random()*3;
			if (r<1.0) {
				tab[i]='a';
			}
			else if (r<2.0) {
				tab[i]='b';
			}
			else {
				tab[i]='c';
			}
		}
		System.out.println("Avant tri : "+Arrays.toString(tab));
		
		
		boolean permut=true;
		for (int idxFin=tab.length ; permut ; idxFin--) {
			permut=false;
			for (int i=1 ; i<idxFin ; i++) {
				if (tab[i-1]>=tab[i]) {
					char c =tab[i];
					tab[i]=tab[i-1];
					tab[i-1]=c;
					permut=true;
				}
			}
		}
		System.out.println("Après tri : "+Arrays.toString(tab));
	}
}
