Partage
  • Partager sur Facebook
  • Partager sur Twitter

triangle de chiffres

Sujet résolu
    25 novembre 2014 à 14:58:56

    Bonjour à tous
    voici mon problème:
    après avoir fais l'incontournable triangle avec des '*'
    je voudrais afficher un triangle fais de nombres entiers compris entre 1 et 9.En gros je veux ça pour un nombre de lignes entrées
    par l'utilisateur:

    1
    12
    123
    1234
    12345
    123456
    1234567
    12345678
    123456789
    1234567891 <-- à 10 on repasse à 1
    12345678912

    ...



    à partir de 10 on remet l'affichage à 1 pour poursuivre jusqu'au nombre de lignes souhaitées.

    ma solution ci dessous fonctionne jusqu'à un certain point, car à partir d'une certaine valeur de j en général à partie de 20
    l'affichage reprend à 10 puis 11 etc...
    comment faire pour qu' à chaque multiple de 10 l'affichage repasse à 1 automatiquement ? ma méthode est elle la bonne ?
    j'ai essayé avec d'autres méthodes entres autres le modulo de j% 10 qui donnait de bon résultats sauf que j'avais un 0 qui trainait
    sur chaque ligne après le 9.
    Merci pour votre aide

    import java.util.Scanner;
    public class TriangleChiffres
    {
    
      public static void main(String[] args)
      {
    		
      int nbLignes;	        //nombre de lignes du triangle
      int numcol = 1;	//numéro de colonne
      int num = 0;	       //nombre à afficher
      int max = 10;
    
      Scanner sc = new Scanner(System.in);
      System.out.print("Saisissez un nombre de lignes : ");
      nbLignes = sc.nextInt();
    				
    //pour une ligne
    for(int i = 1; i <= nbLignes; i++)
     {
      //on affiche le chiffre
       for(int j = 1; j <= numcol; j++)
       {
        num = j ;
        if(num < max)
        {
         System.out.print(num);	
        }
        else if(num >= max)
        {						
         System.out.print((num - max)+ 1);		
        }		
       }
    					
          //saut de ligne
          System.out.println();
          numcol++;
    }		
    }		
    }
    
    
    
    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2014 à 15:56:06

      Bonjour.

      Jette un oeil sur le module (symbole %).

      Et aucun rapport, mais pourquoi pas de 0 ? 1234567890123456789012345...

      • Partager sur Facebook
      • Partager sur Twitter
      Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
        25 novembre 2014 à 17:27:52

        tu peux repartir de ce que tu avais fait avec ton modulo 10 (qui te donnait (1234567890123456...)

        au lieu de 10 tu fais un modulo 9 et tu pars de 0 au lieu de 1 (ce qui te donnera 0123456780123456780...)

        et au moment de ton affichage tu rajoute +1 à la valeur a afficher (ce qui t’amène a 123456789123456...)

        • Partager sur Facebook
        • Partager sur Twitter
          25 novembre 2014 à 18:42:24

          On peut aussi faire sans modulo. C'est plus simple à lire et tout aussi efficace.

          for (int lgn = 1; lgn <= numLignes; ++lgn) {
              int chiffreAAfficher = 1;
              for (int col = 1; col <= lgn; ++col) {
                  System.out.print(chiffreAAfficher);
                  if (chiffreAAfficher == 9)
                      chiffreAAfficher = 1;
                  else
                      ++chiffreAAfficher;
              }
              System.out.println();
          }



          • Partager sur Facebook
          • Partager sur Twitter
            25 novembre 2014 à 18:45:42

            Merci pour vos réponses . ça m'a bien aidé

            pour te répondre pinguet62 j'avais déjà fait l'affichage 01234567890123456... je voulais corser le truc un peu plus :)

            Effectivement j'aurai dû persister avec le modulo.

            Je ne sais par pourquoi je me suis obstiné auparavant avec le modulo 10 (ce qui ma bien fait tourner en rond) alors que comme le suggère mathiewz avec le modulo 9 ça fonctionne parfaitement voilà le code pour ceux que ça pourrait aider.

            import java.util.Scanner;
            public class TriangleChiffres
            {
            
            public static void main(String[] args)
            {
            		
            	int nbLignes;		//nombre de lignes du triangle
            	int numcol = 1;		//numéro de colonne
            	int num = 0;		//nombre à afficher
            	Scanner sc = new Scanner(System.in);
            	System.out.print("Saisissez un nombre de lignes : ");
            	nbLignes = sc.nextInt();
            				
            	//pour une ligne
            	for(int i = 1; i <= nbLignes; i++)
            	{
            	 //on affiche le chiffre dans une colonne
            	 for(int j = 0; j < numcol; j++)
            		{
            		  num = j ;
            		  System.out.print((num % 9)+1);	
            		}	
            		//saut de ligne
            	        System.out.println();
            		numcol++;
            	}		
            }
            		
            }



            • Partager sur Facebook
            • Partager sur Twitter

            triangle de chiffres

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown