Affichage du Triangle de Pascal
Bonjour
J'ai du mal à afficher le triangle de Pascal conformement à cet énoncé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
/* Le triangle de Pascal.
* Le triangle de Pascal est un tableau triangulaire de nombre qui commence comme
* cela
* 1
* 1 1
* 1 2 1
* 1 3 3 1
* 1 4 6 4 1
* 1 5 10 10 5 1
* 1 6 15 20 15 6 1
* 1 7 21 35 35 21 7 1
* 1 8 28 56 70 56 28 8 1
*
* Chaque nombre du triangle de Pascal est une des combinaisons C(n,k).
* Si on compte les lignes et le colonnes
* diagonales à partir de 0, le nombre de ligne n et de la colonne k est C(n,k).
* Par exemple, le nombre de la ligne 6 colonne 2 est C(6,2) = 15. Ecrire un
* programme qui utilise la fonction comb() pour imprimer le triangle de Pascal
* jusqu'à la douzième ligne.
*/ |
J'ai écrit ce code (dans un projet sous l'IDE DevC++) mais qui ne marche bien pour l'affichage.
fichier .h "triangleDePascal.h"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
int comb(int n, int k)
{
if(n < 0|| k < 0 || n < k )
return 0;
int c = 1, m = n + 1;
// m = n + 1;
for( int i = 1; i <= k; i++,m--)
{
c *= m/i;
}
return c;
} |
fichier principale "main.cpp"
Code:
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
|
#include <cstdlib>
#include <iostream>
#include "triangleDePascal.h"
using namespace std;
int main(int argc, char *argv[])
{
int n, k;
cout << " Entrez deux entiers pour l'impression du triangle de Pascal : ";
cin >> n >> k;
for ( int i = 0; i < n; i++ )
{
for ( int j = i; j < k; j++ )
{
cout << " ";
cout << comb( i, j ) << '\n';
}
cout << endl;
cin.ignore(numeric_limits < streamsize > ::max(), '\n');
}
} |
Est-ce que quelqu'un voit une erreur sur ce code qui fait que j'obtiens un résultat erroné. (Exemple d'affichage pour
Merci d'avance.
Affichage du Triangle de Pascal
Merci Koala01.
Je vais mettre en oeuvre cet algorithme. Je sais que ça me prendra bien du temps. Mais je produirais un effort personnel là-dessus.
Je ne crois pas que j'ai suffisamment avancé pour réaliser ce code avec les collections dynamiques( c'est ça les pointeurs? :roll: J'aborderai ce chapitre après les tableaux! J'étudie en fait dans un livre ("Serie Schaum"). Là j'en suis encore aux fonctions).
J'ai aussi bien pris en compte vos remarques sur les règles de bonne pratique de programmation(que je connais mais dont je ne me sers pas toujours).
Je vous renouvelle mes remerciements pour votre contribution.
Affichage du Triangle de Pascal - Erreur de compilation
Merci à tous les deux JolyLoic et Koala01.
Effectivement je suis un débutant en C++. Dans la mesure que je suis à la lettre un livre d'apprentissage dont je veille à faire tous les exercices et dans l'ordre.
A partir des indications reçues j'ai structuré mon programme comme suit:
fichier .h : pascalTriangle.h
Code:
1 2 3 4
|
int combination(int value, int line_number);
// void displayPascalTriangl(int , int );
void displayPascalTriangl(int value, int line_number); |
fichiers .cpp
1) pascalTriangle.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
int combination(int value, int line_number)
{
if(value < 0|| line_number < 0 || value < line_number )
return 0;
int comb = 1, m = value + 1;
for( int i = 1; i <= line_number; i++,m--)
{
comb *= m/i;
}
return comb;
} |
2) displayPascalTriangle.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
#include <iostream>
#include "pascalTriangl.h"
void displayPascalTriangl(int value, int line_number)
{
for (int i = -1; i < value; i++)
{
cout << " ";
for (int j = i + 1; j < line_number; j++)
{
//cout << " ";
// cout << combination(i, j) << '\n';
cout << combination(i, j) << " ";
}
cout << endl;
}
cout << endl;
} |
3) mainPascalTriangle.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
#include <iostream>
#include <limits>
#include "pascalTriangl.h"
using namespace std;
// int main(int argc, char *argv[])
int main()
{
int value, line_number;
cout << " Introduisez un entier pour l'affichage du triangle de Pascal : ";
cin >> value;
cout << " Introduisez le nombre de ligne : ";
cin >> line_number;
cin.ignore(numeric_limits < streamsize > ::max(), '\n');
displayPascalTriangl(value, line_number);
} |
Le problème auquel je suis confronté à ce niveau est ce message d'erreur :
displayPascalTriangl.cpp: In function `void displayPascalTriangl(int, int)':
displayPascalTriangl.cpp:8: error: `cout' undeclared (first use this function)
displayPascalTriangl.cpp:8: error: (Each undeclared identifier is reported only once for each function it appears in.)
displayPascalTriangl.cpp:15: error: `endl' undeclared (first use this function)
make.exe: *** [displayPascalTriangl.o] Error 1
Exécution terminée
Pourtant j'ai bien utilisé la directive <iostream> et mon fichier .h
Est-ce que j'ai omis d'inclure une librairie dont je n'ai pas connaissnace? J'utilise DEVC++ come Environement de Developement!.
Merci de votre disponibilité pour le temps consacré.
Affichage du Triangle de Pascal - Disparition de la fenêtre Dos
Merci à tous.
J'ai ajouté la directive
Code:
using namespace std;
dans tous les fichiers où j'utilise cin et cout et remplacé leur occurrence par std::cin, std::cout
Il se fait que je n'ai plus d'erreur. Cependant je n'ai plus ma fenêtre résultat(elle disparaît aussitôt qu'elle apparaît ) malgré l'instruction :
Code:
1 2
|
std::cin.ignore(numeric_limits < streamsize > ::max(), '\n'); |
Est-ce la bonne manière d'utilisation de std:: que je trouve pourtant pas pratique car il faut écrire autant de std:: qu'il y a aurait de cin, cout. A moins que je n'en saisis pas encore bien l'utilisation.
Comment puis-je garder la visualisation de l'affichage? Mon code est-il adapté pour l'affichage de ce que je voudrais obtenir vu que je ne peux voir ce qui est calculé par mon programme?
Je vous renouvelle mes gratitudes pour votre disponibilité et votre précieuse contribution.
Affichage du Triangle de Pascal - Résultat non conforme
Bonjour à tous
Je me suis pas mal occupé à mon exercice sur le triangle de Pascal. Je suis parvenu à faire marcher le code mais avec un résultat non conforme à ce qui serait attendu. J'ai beaucoup réfléchi sur ma solution et envisagé pas mal de cas. Mais j'arrive pas à obtenir un triangle de pascal tel que ça devrait l'être . Par ailleurs mes coefficients sont faux alors que je pense avoir bien tenu compte de la formule(prière de voir à cet effet l'énoncé en début de discussion...). Je me suis appliqué à calculer à la main quelques valeurs de combinaison à travers mon code.Mais à l'exécution, j'obtiens autre chose.
Je vous remercie d'avance de bien vouloir m'éclairer sur cette question. Pensez-vous que mon code correspond à l'algorithme énoncé antérieurement. Encore une fois mes gratitudes pour votre bien aimable attention .
Code complet :
Code:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
// Fichier main.cpp
#include <iostream>
#include <limits>
#include "pascalTriangl.h"
using namespace std;
int main()
{
int value, line_number;
std::cout << " Introduisez un entier pour l'affichage du triangle de Pascal : ";
std::cin >> value;
std::cout << " Introduisez le nombre de ligne : ";
std::cin >> line_number;
if(value < 0 || line_number < 0 || value < line_number )
{
std::cout << " Verifiez les valeurs : ";
}
displayPascalTriangl(value, line_number);
std::cin >> value;
/*Ne marche ... : //std::cout << "Appuyez sur entrée pour continuer...";
//std::cin.ignore(numeric_limits < streamsize > ::max(), '\n');
// return 0; ... pas la fenêtre d'affichage disparaît malgré cette partie du code */
}
// Fichier affichage.cpp
#include <iostream>
#include "pascalTriangl.h"
using namespace std;
void displayPascalTriangl(int value, int line_number)
{
for (int i = 1; i <= value; i++)
{
std::cout << " ";
for (int j = 1; j <= i + 1; j++)
{
std::cout << " " << combination(i, j);
}
std::cout << endl;
}
std::cout << endl;
}
// Fichier combinaison.cpp
void combination(int value, int line_number)
{
int comb = 1;
if(value < 0 || line_number < 0 || value < line_number)
comb = 0;
if(value == 0 && line_number == 0)
comb = 1;
for( int k = 0; k < line_number; k++)
{
comb *= (value - k)/(k + 1);
}
}
// Fichier .h
int combination(int value, int line_number);
// void combination(int value, int line_number);
void displayPascalTriangl(int value, int line_number); |