← (précédent) B.7 correction : Triangle de Pascal
C.0 La programmation orientée objet (P.O.O)
Accueil S O M M A I R E

B.8 Correction : Loto

Mini-projet 6 : Loto La française des Jeux organise chaque lundi, mercredi et samedi, un jeu de tirage de boules numérotés de 1à 49.
5 boules sont tirées au sort. Puis un tirage d'une boule dont le numéro (dit chance) varie de 1 à 10.

Dans un premier temps, oubliez le numéro chance.

Ecrire un programme qui demande à l'utilisateur de jouer une seule grille. Donc, l'utilisateur saisit 5 numéros. Puis le programme affiche un tirage au hasard de 5 numéros. Par ordre de sortie, puis par ordre croissant. Puis le programme affiche le jeu du joueur par ordre croissant.
Ensuite le programme informe le joueur le nombre de numéros trouvés.

Piste : La méthode Math.random() est un passage obligé.
Correction du mini-projet 6

public class Loto
{
    public static void main (String [] args)
    {
        int [] jeu = new int[5];
        int numChance = 0;
        System.out.println();
        System.out.println("Ce programme simule le jeu LOTO");
        System.out.println("Saisissez vos 5 numeros entre 1 et 49 inclus");
		
        int i = 0;
        do
        {	
            for( i = 0; i < 5; i++)
            {
                jeu[i] = Lire.entierInt();
            }
			
            if(!tabDansIntervalle(jeu) )
            {
                System.out.println("recommencez : vos numeros ne sont pas tous bons");
            }  
        }
        while( !tabDansIntervalle(jeu) );
		
       
        int [] tirage = new int[5];
		
        do
        {
            tirage = tabloIntHasard();
        }
        while( !tabSansDoublons(tirage) );

        System.out.println();
        System.out.print("tirage par ordre de sortie : ");
        affichTab(tirage);
        System.out.println("\n");
        
        System.out.print("tirage par ordre croissant : ");
        tabOrdreCroissant(tirage);
        affichTab(tirage);
        System.out.println();
		
        System.out.print("Votre jeu, ordre croissant : ");
        tabOrdreCroissant(jeu);
        affichTab(jeu);
        System.out.println("\n ");
        
		
        int n = cardINTERtabs(jeu, tirage);
		
        if(n > 0)
        {
            System.out.print("Vous avez trouve " + n + (" numero(s) : "));
            System.out.print("");
            tabINTERtab(jeu, tirage);
        }
        else
        {
            System.out.println("Vous n avez trouve aucun numero");
        }
			
    }
	
	
    //1. Ecrire une méthode qui, étant donné un tableau d'entiers,
    //affiche les valeurs de ce tableau sur la même ligne
    public static void affichTab(int [] tab)
    {
        for(int i = 0; i < tab.length; i++)
        {
            if( i == tab.length - 1)
            {
                System.out.print(tab[i]);
            }
            else 
            {
                System.out.print(tab[i] + " - ");
            }
			
        }
    }
	
	//2. Ecrire une méthode qui retourne un tableau de 5 entiers 
	//dont les valeurs sont pris au hasard de 1 à 49 (inclus)
	public static int [] tabloIntHasard ()
	{
		int [] tab = new int [5];
		
		for(int i = 0; i < tab.length; i++)
		{
			tab[i] = (int)( (Math.random() * 49) + 1);
		}
		return tab;
	}
	
	//3. Ecrire une méthode qui étant donné un nombre entier et un tableau
	//d'entiers, vérifie la présence ou non de cet entier dans ce tableau
	public static boolean nombreDansTableau(int entier, int [] tabEntier)
	{
		boolean verite = false;
		for(int i = 0;  i < tabEntier.length; i++)
		{
			if( entier == tabEntier[i] )
			{
				verite = true;
				break;
			}
		}
		return verite;
	}
	
    //4. Ecrire une méthode qui, étant donné un nombre entier et un tableau
    //d'entiers, retourne le nombre de fois où l'on trouve cet entier
    // dans ce tableau
    public static int nbreEltDansTablo(int entier, int [] tabEntier)
    {
        int nombre = 0;
        for(int i = 0;  i < tabEntier.length; i++)
        {
            if( entier == tabEntier[i] )
            {
                nombre++;
            }
        }
        return nombre;
    }
	
	//5. Ecrire une méthode qui, étant donné un tableau d'entiers, 
	//vérifie l'absence de doublons
    public static boolean tabSansDoublons(int [] tabEntier)
    {
        boolean verite = true;
        for(int i = 0; i < tabEntier.length; i++)
        {
            if( nbreEltDansTablo(tabEntier[i], tabEntier) > 1 )
            {
                verite = false;
                break;
            }
        }
		return verite;
    }
	
	// 6. Ecrire une méthode qui, étant donné un tableau d'entiers, 
	//retourne le même tableau. Mais cette fois, les nombres sontclassés
	//par ordre croissant.
    public static void tabOrdreCroissant(int [] tabEntier)
    {
        for(int i = 0; i < tabEntier.length - 1; i++)
        {
            for(int j = 0; j < tabEntier.length - 1; j++)
            {
                if( tabEntier[j] > tabEntier[j+1] )
                {
                    int temp = tabEntier[j];
                    tabEntier[j] = tabEntier[j+1];
                    tabEntier[j+1] = temp;
                }
            }
        }
		
    }
	
	// 7. Ecrire une méthode qui, étant donné 2 tableaux d'entiers,
	//retourne le nombre de valeurs qu'on trouve simultanément dans 
	// les 2 tableaux. (le cardinal de l'intersection)
	public static int cardINTERtabs(int [] tabEntier1, int [] tabEntier2)
	{
		int card = 0;
			
		for(int i = 0; i < tabEntier1.length; i++)
		{
			
				if( nombreDansTableau(tabEntier1[i], tabEntier2) )
				card++;
			
		}
		return card;
	}
		
	// 8. Ecrire une méthode qui, étant donnés 2 tableaux d'entiers,
	// affiche les valeurs communes aux 2 tableaux
	public static void tabINTERtab(int [] tabEnt1, int [] tabEnt2)
	{
		
		
		for(int i = 0; i < tabEnt1.length; i++)
		{
			for(int j = 0; j < tabEnt2.length; j++)
			{
				if(tabEnt1[i] == tabEnt2[j]  )
				System.out.print(tabEnt1[i] + " ");
				
			}
		}
		
	}
	
	//Ecrire une méthode qui, étant donné un tableau d'entiers, vérifie 
	//que ces valeurs sont comprises entre 1 et 49
	public static boolean tabDansIntervalle(int [] tab)
	{
		boolean verite = true;
		for(int i = 0; i < tab.length; i++)
		{
			if(tab[i] < 1 || tab[i] > 49)
			{
				verite = false;
			}
			
		}
		return verite;
	}
      
}       
			
			


Pas de commentaires ici. Regardez les méthodes et leur utilisation

Vous pouvez inclure le numéro chance.

Remarquez la première boucle do ... while
Je demande la saisie permanente de 5 numéros tant que (while) les numéros saisies ne sont pas tous compris dans l'intervalle 1 - 49 (utilisation de la méthode tabDansIntervalle().

Améliorer en demandant que la saisie permanente des 5 numéros tant que la saisie contient des doublons (au moins 1 numéro saisi au moins 2 fois). Pour cela, utilisez la méthode tabSansDoublons().
La connaissance, c'est bien. La partager, c'est mieux
Conseiller ce site à un(e) ami(e):

Son e-mail est :       
Une suggestion à faire pour ce site ? ... Contact : webmaster@debutantprog.com
← (précédent) B.7 correction : Triangle de Pascal
C.0 La programmation orientée objet (P.O.O)
Accueil S O M M A I R E

B.8 Correction : Loto