Wiki ~ namok.be

esi's home

Vous trouverez ici quelques solutions d'exercice. Dès que vous avez envie de poster une solution, faites-le. Si vous avez envie de critiquer une solution, faites-le aussi …

Remplissage d'une baignoire

Énoncé

Étant donné le débit d'un robinet exprimé en litres/heures ainsi que la capacité de la baignoire donnée en litres, écrire l'algorithme qui calcule et affiche la durée de remplissage de la baignoire en heure(s), minute(s), seconde(s).

Solution

import java.util.Scanner ; 
 
/**
 * RemplissageBaignoire
 * Une solution de l'exercice 4, TD5, 2007-2008. 
 * 
 * Étant donné le débit d'un robinet exprimé en litres/heures ainsi que la capacité 
 * de la baignoire donnée en litres, écrire l'algorithme qui calcule et affiche 
 * la durée de remplissage de la baignoire en heure(s), minute(s), seconde(s).
 *
 * @author: PbT
 */
 
public class RemplissageBaignoire { 
    public static void main ( String[] args ) { 
	double débit ;  	// débit du robinet (l/h)
	double capacité ; 	// capacité de la baignoire (l) 
	double temps ; 		// temps de remplissage de la baignoire (s)
	int heures; 
	int minutes;
	int secondes ;  	// temps exprimé en h,m,s
	int tempsRestant ; 
	Scanner clavier = new Scanner ( System.in ) ;  
 
	// Lecture des valeurs *sans* vérification 
	System.out.print("Capacité de la baignoire (l): ");
	capacité = clavier.nextDouble() ; 
	System.out.print("Débit du robinet (l/h): ");
	débit = clavier.nextDouble() ; 
	// Rappel, Q = V / t 
	temps = capacité / débit ; 
	// Conversion du temps en secondes
	temps = temps * 3600 ; 
	// Récupération des valeurs et conversion en hms
	secondes = (int) temps % 60 ;
	tempsRestant = (int) temps / 60 ;
	minutes = tempsRestant % 60 ; 
	tempsRestant = tempsRestant / 60 ; 
	heures = tempsRestant ; 
	// Affichage du résultat
	System.out.println("Temps de remplissage de la baignoire: " + 
		heures + "h" + 
		minutes + "m" + 
		secondes + "s");
    }

Bulletin de Lotto, I2

Énoncé

Nous allons jouer au Lotto et peut-être gagner. Nous allons implémenter une classe représentant un bulletin de Lotto.

Les bulletins de Lotto sont composés de plusieurs grilles de 42 numéros. Dans chaque grille, il faut cocher 6 numéros (coût 0.50). Le bulletin de Lotto simple est composé de 12 grilles, dans chaque grille, on peut cocher 6 numéros 4. Nous allons écrire une petite application permettant de remplir aléatoirement notre bulletin de Lotto (à suivre)

Solution

La classe Grille, représente une grille de 42 numéros. L'énoncé impose un tableau de 42 boolean.

/**
 * Solution de l'<b>I2</b>, Bulletin de Lotto.
 * L'énoncé est disponible sur le site http://esi.namok.be, dans les archives du 
 * cours, sous le nom LAJ-I2-20071213-56.pdf. 
 * 
 * Il est demandé d'écrire une classe Grille représentant une grille de Lotto et 
 * une classe BulletinDeLotto composée de 12 grilles ... 
 * 
 * @since 2007-2008
 * @author pbt
 */
package lotto;
 
public class Grille {
	private final int LIGNE = 7 ; 
	private final int COLONNE = 6 ; 
	//private final int NOMBRE_CASES = LIGNE * COLONNE ; 
	private boolean[] cases ; 
 
	public Grille(){
		cases = new boolean[42] ; 
	}
 
	public void affiche() {
		int indice = 0 ; 
		for (int ligne=0; ligne<LIGNE; ligne++ ) {
			for (int colonne=0; colonne<COLONNE; colonne++) {
				if (!cases[indice]) {
					System.out.print(" ");
					System.out.print(indice+1);
					if (indice>=9) {
						System.out.print(" ");
					} else {
						System.out.print("  ");
					}						
				} else { 
					System.out.print(" X  ");
				}
				indice++;
			}
			System.out.println();
		}	
	}
 
	public void coche(int indice) {
                // sans aucune vérification !
		cases[indice]=true; 		
	}
 
	public void remplit() {
		int nombreCasesAremplir = 6 ;
		int indice ; 
		while (nombreCasesAremplir>0) {
			indice = (int) (Math.random() * 42) ;
			if (!cases[indice]) {
				cases[indice]=true;
				nombreCasesAremplir--;
			}
		}
	}
}

La classe BulletinDeLotto se compose de 12 grilles …

/**
 * Solution de l'<b>I2</b>, Bulletin de Lotto.
 * L'énoncé est disponible sur le site http://esi.namok.be, dans les archives du 
 * cours, sous le nom LAJ-I2-20071213-56.pdf. 
 * 
 * Il est demandé d'écrire une classe Grille représentant une grille de Lotto et 
 * une classe BulletinDeLotto composée de 12 grilles ... 
 *
 * Classe BulletinDeLotto 
 *
 * Ce code n'est pas commenté ... il devrait l'être. 
 *
 * @since 2007-2008
 * @author pbt
 */
package lotto;
 
public class BulletinDeLotto {
	private final int NOMBRE_GRILLES = 12 ; 
	private Grille[] grilles ; 
 
	public BulletinDeLotto() {
		grilles = new Grille[NOMBRE_GRILLES] ;
		for (int i=0; i<grilles.length; i++) {
			grilles[i] = new Grille() ; 
		}
	}
 
	public void affiche() {
		for (Grille g : grilles) {
			g.affiche() ; 
			System.out.println(); 
		}		
	}
 
	public void remplit() {
		for (Grille g: grilles) {
			g.remplit(); 
		}		
	}
}