IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Triangle de Pascal en Java


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Triangle de Pascal en Java
    Salut à vous les développeurs !!!

    J'ai un petit souci : comment à parti d'un tableau à deux dimensions en Java on parvient à implementer le triangle de pascal ? Voici un essai de code source mais cela ne marche pas complètement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    class Utile{
    	public static int fac(int a){
    		if(a<=1) return 1;
    		else return a*fac(a-1);
    	}
    	public static int comb(int r, int t){
    		int y = fac(t)/fac(r)*fac(t-r);
    		return y;
    	}
    	public static int comb1(int p, int n)
    	{ if((p==n)&&(p==0)) return 1;
    	else return comb(p-1,n-1)+comb(p-1,n);
    	}
    }
    public class trianglePascal
    { public static void main(String[] args)
    	{  int N;
    	   System.out.print("entrer l'ordre auquel vous voullez determiner les coefficients de Pascal: ");
    	   N = Clavier.lireInt(); System.out.println("\n");
    		int [][] t= new int[N][];
         for(int n=0;n<N;n++)
    	 { for(int p=0;p<t[n].length;p++)
    		  t[n][p] = Utile.comb1(p,n);
    	 }for(int n=0;n<N;n++) 
    	 { System.out.print (  " " + n + "| ") ;
           for (int p=0 ; p<t[n].length ;p++)
    		  System.out.print (t[n][p] + " ") ;
    	      System.out.println ("\n") ;
        }
    	}
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Un message plus détaillé sur le problème n'aurait pas été de trop (plutôt qu'un "ça marche pas complètement", d'autant que cela ne fonctionne pas du tout, parce qu'il y a une NullPointerException).

    Déjà, il faut voir un tableau Java à 2 dimensions comme un tableau de tableau. Quand tu écris int [][] t= new int[N][]; Tu crées un tableau de N cases de type int[], ne contenant aucun tableau. Donc ça plante lors du for(int p=0;p<t[n].length;p++ car tab[n] est null (d'où NullPointerException).

    Soit tu déclares un tableau carré (new int[N][N]) ce qui convient pour un triangle de Pascal d'ordre N, mais il faut n'afficher que n+1 valeurs à la ligne n. Soit tu déclares les tableaux à chaque ligne, de la bonne dimension (n+1, soit 1 pour la ligne n=0, 2, pour la ligne n=1, etc...).

    Ensuite, pour moi un triangle de Pascal, c'est une matrice triangulaire, tel que les valeurs de la ligne N+1, sont les sommes 2 à 2 des valeurs successives de la ligne précédente :

    1
    1 1
    1 2 1
    1 3 3 1
    ...
    
    Donc en gros, à chaque ligne n, on détermine les n+1 valeurs, comme étant :
    • 1 pour la première
    • pour les valeurs i de 2 à n-1 : valeur[n][i] = valeur[n-1][i-1] + valeur[n-1][i]
    • 1 pour la dernière


    A partir de cette définition, la double boucle sur le tableau en découle assez naturellement.

    Je ne vois pas trop ce que factorielle a à voir avec ça, mais je suppose qu'on peut changer la graine (la valeur initiale, qui se répète également en première et dernière colonne), voire la fonction de calcul f( valeur[n-1][i-1], valeur[n-1][i] ), ou g(n, i) tout court, mais est-ce bien toujours un triangle de Pascal.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    salut
    Il est plutôt cool ton raisonnement mais j'avais moi même déjà pensé. juste que le but est de pouvoir résoudre le problème en utilisant un tableau des tableaux en java. salut

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par cyprien lekoue Voir le message
    salut
    Il est plutôt cool ton raisonnement mais j'avais moi même déjà pensé. juste que le but est de pouvoir résoudre le problème en utilisant un tableau des tableaux en java. salut
    Euh, bah, c'est le cas, je parle bien d'une solution à base de tableau de tableaux (tableau à 2 dimensions).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Triangle de pascal
    Par koko03 dans le forum Mathématiques
    Réponses: 3
    Dernier message: 26/01/2009, 17h52
  2. triangle de pascal
    Par chouuc dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 20/01/2009, 01h36
  3. Triangle de Pascal
    Par WhiteTigerZ dans le forum Pascal
    Réponses: 5
    Dernier message: 09/03/2007, 19h47
  4. Triangle de Pascal
    Par yushkoya dans le forum VBScript
    Réponses: 6
    Dernier message: 11/07/2006, 14h18
  5. [Mac] Equivalents de Delphi, Pascal, C, Java, etc ?
    Par cyberjoac dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 02/04/2006, 12h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo