/* Auteur: Nicolas JANEY          */
/* nicolas.janey@univ-fcomte.fr   */
/* Fevrier 2005                   */

public class Remplissage2EnConsole {

  /* Fonction de test de la validite d'une valeur entiere */
  /* Elle doit etre 1, 2 ou 4 pour que true soit retourne */
  /* sinon false est retourne.                            */

  public static boolean capaciteCorrecte(int v) {
    if ( ( v != 1 ) && ( v != 2 ) && ( v != 4 ) )
      return(false);
      else
      return(true);
  }

  /* Fonction principale                                  */

  public static void main(String [] args) {
    Console.setTitle("Remplissage2");
    int deltaH;                   // Increment unitaire
    int hauteurVase;              // Hauteur du vase
    boolean plein;                // Le vase est-il plein?
    int reste;                    // Hauteur restante pour remplir le vase
    int seaux1,seaux2,seaux4;     // Nombres de seaux
    int hauteurCumulee;           // Hauteur cumulee instantanee
    int seau;                     // Valeur d'un seau
    int hauteur = 0;              // Hauteur candidate
  /* Lecture clavier des donnees initiales                */
    Console.out.print("Delta h      : ");
    deltaH = Integer.valueOf(Console.in.readLine()).intValue();
    Console.out.print("Hauteur vase : ");
    hauteurVase = Integer.valueOf(Console.in.readLine()).intValue();
  /* initialisations                                      */
    seaux1 = 0;
    seaux2 = 0;
    seaux4 = 0;
    hauteurCumulee = 0;
  /* Boucle de remplissage                                */
    do {
  /* Lecture d'un seau                                    */
      Console.out.print("Quel volume ajouter : ");
      seau = Integer.valueOf(Console.in.readLine()).intValue();
  /* Test de validite d'un seau                           */
      if ( capaciteCorrecte(seau) ) {
  /* Calcul de la nouvelle hauteur d'eau dans le vase     */
        hauteur = hauteurCumulee+seau*deltaH;
  /* Si le vase n'est pas plus que rempli                 */
        if ( hauteur <= hauteurVase ) {
  /* mise a jour des informations de remplissage          */
          hauteurCumulee = hauteur;
          switch (seau) {
            case 1 : seaux1 = seaux1+1;
                     break;
            case 2 : seaux2 = seaux2+1;
                     break;
            case 4 : seaux4 = seaux4+1;
                     break; } } } }
    while ( hauteur < hauteurVase );
  /* La boucle s'execute tant que plus de seaux           */
  /* que necessaire n'ont pas ete utilises.               */
  /* calculs finaux                                       */
    reste = hauteurVase - hauteurCumulee;
    plein = ( hauteurCumulee == hauteurVase );
  /* Messages de conclusion                               */
    if ( plein )
      Console.out.println("Le vase est plein.");
      else
      Console.out.println("Le vase n'est pas plein. Il manque "+reste);
    Console.out.println("Vous avez utilisé :");
    Console.out.println(seaux1+" seaux de capacité 1");
    Console.out.println(seaux2+" seaux de capacité 2");
    Console.out.println(seaux4+" seaux de capacité 4");
  }
}