Aller au contenu


Photo
- - - - -

Triangle de Pascal


  • Veuillez vous connecter pour répondre
4 réponses à ce sujet

#1 philou-RX

philou-RX

    Habitué

  • Membres
  • PipPip
  • 261 messages
  • Gender:Male
  • Location:Riviera - Vaudoise

Posté 30 octobre 2010 - 08:32

Bonsoir à tous chers Roboticiens,

Tout d'abord sorry de n'être pas plus présent sur le fofo, mais le temps me manque... (ca m'énerve) mais heureusement je peux profiter d'heure en plus pour bosser sur mes différents projets ^^ (vive le changement d'heures)

Bon, maintenant venons à ce que m'amène sur ce sujet, je me mets à la programmation orientation objet en C++, bon je sais pour les puristes, y a beaucoup mieux pour la POO (JAVA, EIFFEL), mais bon je me dis que ne connaître plusieurs langages ca peut aider, bref tout cette tartine pour vous dire que je me suis replonger dans de vieux exos (bien sur que j'avais pas fait) pour me plonger dans le C++, et justement sur la fct du triangle de Pascal, et en récursive (pas compliqué, j'avais le calcul à portée de main), mais j'ai un soucis au niveau de l'affichage
et je n'arrive pas à déterminé où se trouve pas mon soucis, est-ce que c'est ma fonction récursive, ou si c'est dans ma fonction d'affichage.

J'ai regardé des exemples de codes, et il me semble que je suis pas trop loin du bon résultat, mais je ne vois pas ou ca coince, alors si vous pouvez me filer un coup de main, ce serait cool...

je vous mets le code ci-dessous :

// Nom du fichier : Exos2.cpp
//
// Description : Réaliser en fct récursive pour afficher le traingle de Pacal
// fct récursive Cij = Ci-1j-1 + Ci-1,j
//
// Auteur : Philippe Bovey
//
// Date : 26.09.2010
//
// Dernière Modofication : 30.10.2010
//
// Version Finie ? (O/N) : N
/******************************************************************************/
#include
#include
#include
//------------------------------------------------------------------------------
using namespace std;
//------------------------------------------------------------------------------
int coeffBinomial(int i, int j)
{
if(j == 0 || j == i)
return 1;
else
return coeffBinomial(i - 1, j - 1) + coeffBinomial(1 - 1, j);
}
//------------------------------------------------------------------------------
void afficherTrianglePascal(int n)
{
int val_l = n;
int val_aff;

// affiche la ligne indique le nombre de colonne
cout << setw(6);
for(int i = 0; i < n ; ++i)
cout << i << setw(3);

cout << endl;

// affiche la ligne séparatrice
cout << " ";
for(int i = 0; i < n ; ++i)
cout << "---";

cout << endl;

// doit afficher ligne après ligne
for(int x = 0; x < n; ++x)
{
// affiche le premier de chiffre de chaque colonne
cout << setw(2) << x << " |";
for(int y = 0; y <= x; ++y)
cout << " " << coeffBinomial(x, y) << setw(3);
cout << endl;
}
}
//------------------------------------------------------------------------------
int main()
{
int nLignes = 0;

cout << "Triangle de Pascal" << endl;
cout << "==================" << endl;
cout << "Saisir le nombre de lignes souhait\202 (entre 1 et 15 inclus) : ";
cin >> nLignes;
cout << endl;

afficherTrianglePascal(nLignes);

cout << endl;
system("pause");
return EXIT_SUCCESS;
}
/************************************************************ FIN DU FICHIER **/

[/code]

Merci de m'avoir lu,

A tout bientôt

#2 robocop

robocop

    Membre passionné

  • Membres
  • PipPipPip
  • 357 messages
  • Gender:Male

Posté 30 octobre 2010 - 09:30

Il y a une erreur dans ta fonction coeffBinomial voici le code correct :
int coeffBinomial(int i, int j)
{
if(j == 0 || j == i)
return 1;
else
return coeffBinomial(i - 1, j - 1) + coeffBinomial(i - 1, j);
}
[/code]

Je pense que ton calcul du coef pour chaque élément du triangle peut-être évité, en te servant de la règle de construction du triangle : "placer 1 au sommet de la pyramide, puis 1 et 1 en dessous, de part et d'autre. Les extrémités des lignes sont toujours des 1, et les autres nombres sont la somme des deux nombres directement au-dessus."(cf wikipédia) ie tu représentes une ligne par un tableau d'entiers, et tu calcules le tableau de la ligne suivante avec celui de la ligne d'avant.

#3 philou-RX

philou-RX

    Habitué

  • Membres
  • PipPip
  • 261 messages
  • Gender:Male
  • Location:Riviera - Vaudoise

Posté 31 octobre 2010 - 04:29

Ouwaaaf, super rob !!!

Je l'avais pas vu ce '1 - 1', et le pire c'est que j'ai écris le calcul sur une feuille de brouillon... Grrr

Testé --> Ca Marche !!!

A tout bientôt



#4 robocop

robocop

    Membre passionné

  • Membres
  • PipPipPip
  • 357 messages
  • Gender:Male

Posté 31 octobre 2010 - 05:38

Content que ça marche :).

#5 philou-RX

philou-RX

    Habitué

  • Membres
  • PipPip
  • 261 messages
  • Gender:Male
  • Location:Riviera - Vaudoise

Posté 01 novembre 2010 - 12:03

[quote"Rob"]Je pense que ton calcul du coef pour chaque élément du triangle peut-être évité, en te servant de la règle de construction du triangle : "placer 1 au sommet de la pyramide, puis 1 et 1 en dessous, de part et d'autre. Les extrémités des lignes sont toujours des 1, et les autres nombres sont la somme des deux nombres directement au-dessus."(cf wikipédia) ie tu représentes une ligne par un tableau d'entiers, et tu calcules le tableau de la ligne suivante avec celui de la ligne d'avant. [/quote]

Pour répondre à ton autre suggestion, oui j'y ai pensé mais je voulais me remettre dans ces fameuses fonctions récursives, mais je vais essayer de réaliser ceci avec une tableau, on verra ce que ca va donné, encore une fois merci pour le coup de main et surtout d'oeil...









0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users