begin process at 2012 05 27 21:06:27
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > TRIANGLE DE PASCAL RÉCURSIF

TRIANGLE DE PASCAL RÉCURSIF


 Information sur la source

 Description

Cliquez pour voir la capture en taille normale
Fonction récursive permettant de calculer et afficher les éléments du triangle de pascal.

Source

  • /****************************************/
  • /* trianglepascalrecursif.c
  • /*
  • /* v1.0
  • /*
  • /* 16 / 12 / 2005
  • /*
  • /* maiskisuije@hotmail.com
  • /*
  • /****************************************/
  • #include <stdio.h>
  • #define DIM 9
  • typedef enum{OK,ERREUR};
  • void initialisation (int matrice[DIM][DIM], int *err);
  • /*
  • *
  • */
  • void triPascal (int p[DIM][DIM], int i, int j);
  • /*
  • *
  • */
  • void affichageMatrice (int matrice[DIM][DIM], int *err);
  • /*
  • *
  • */
  • int main (void)
  • {/*
  • * Bloc B1 : main
  • * objectif : calculer et afficher le triangle de pascal
  • * méthode : additions successives (opérateur arithmétique +), périphérique de sorties
  • * besoin : mPascal une matrice, x,y deux entiers, DIM
  • * connu : DIM 8
  • * entrée : ---
  • * sortie : ---
  • * résultat : affichage de la construction du triangle de pascal
  • * hypothèse : x et y sont deux entiers >=0 */
  • int x = 0; /* entier pour les lignes de la matrice */
  • int y = 0; /* entier pour les colonnes de la matrice */
  • int mPascal[DIM][DIM]; /* une matrice de dimension DIM * DIM */
  • int erreur; /* pour la gestion des erreurs */
  • /* initialiser une matrice (void Bloc B2) */
  • initialisation ( mPascal, &erreur);
  • /* A : mPascal une matrice de dimension DIM*DIM à été initialisée */
  • if (erreur == OK)
  • {
  • /* calculer les éléments du triangle de pascal (voir Bloc B3) */
  • triPascal(mPascal, x, y);
  • /* A : les éléments du triangle de pascal ont été calculés */
  • /* afficher une matrice (voir Bloc B4) */
  • affichageMatrice (mPascal, &erreur);
  • /* A : mPascal une matrice de dimension DIM*DIM a été affichée */
  • if (erreur != OK)
  • {
  • printf("\n! Une erreur s'est produite lors de l'affichage du triangle de pascal.\n");
  • }
  • }
  • else
  • {
  • printf("\n! Une erreur s'est produite lors de l'initialisation de la matrice.\n");
  • }
  • /* A : le calcul et l' affichage du triangle de pascal à été effectué */
  • return 0;
  • }
  • void initialisation (int matrice[DIM][DIM], int *err)
  • {/*
  • * Bloc B2 : initialisation
  • * objectif : initialiser une matrice
  • * méthode : en remplissant la diagonale principale avec des 1 et le reste avec des 0
  • * besoin : matrice une matrice d'entiers >= 0, DIM
  • * connu : DIM 8
  • * entrée : matrice une matrice
  • * sortie : matrice une matrice d'entiers >= 0
  • * résultat : *err = OK si l'initialisation s'est bien déroulée
  • * hypothèse : matrice fait référence à une matrice d'entiers */
  • int lignes; /* entier pour les lignes de la matrice */
  • int colonnes; /* entier pour les colonnes de la matrice */
  • for (lignes = 0; lignes < DIM; lignes++)
  • {
  • for (colonnes = 0; colonnes < DIM; colonnes++)
  • {
  • if (lignes == colonnes)
  • {
  • matrice[lignes][colonnes] = 1;
  • }
  • else
  • {
  • matrice[lignes][colonnes] = 0;
  • }
  • }
  • }
  • *err = OK;
  • /* A : matrice une matrice d'entiers de dimension DIM * DIM a été initialisée */
  • }
  • void triPascal (int p[DIM][DIM], int i, int j)
  • {/*
  • * Bloc B3 : triPascal
  • * objectif : calculer les éléments du triangle de pascal
  • * méthode : additions successives (opérateur arithmétique +)
  • * besoin : p une matrice d'entiers >= 0, i, j deux entiers >= 0, DIM 8
  • * connu : DIM
  • * entrée : p une matrice, i, j deux entiers >= 0
  • * sortie : p une matrice contenant des nombres entiers
  • * résultat : *err = OK si les hypothèses sont réspéctées
  • * hypothèse : la matrice est intialisée */
  • /* A : la matrice est initialisée */
  • if ((i < 0) || (j < 0)) return;
  • if(i == DIM) return;
  • if (i != j)
  • {
  • if (((i - 1) >= 0) && ((j - 1) >= 0)) p[i][j] = p[i - 1][j] + p[i - 1][j - 1];
  • else if ((i - 1) >= 0) p[i][j] = p[i - 1][j];
  • triPascal (p, i, j + 1);
  • }
  • triPascal (p, i + 1, 0);
  • }
  • void affichageMatrice (int matrice[DIM][DIM], int *err)
  • {/*
  • * Bloc B4 : affichageMatrice
  • * objectif : afficher une matrice
  • * méthode : périphérique de sortie
  • * besoin : matrice une matrice d'entiers >= 0, DIM
  • * connu : DIM 8
  • * entrée : matrice une matrice
  • * sortie : ---
  • * résultat : *err = OK si l'affichage à été bien réalisé
  • * hypothèse : la matrice est initialisée avec des entiers >= 0 */
  • int lignes = 0; /* entier pour les lignes de la matrice */
  • int colonnes = 0; /* entier pour les colonnes de la matrice */
  • *err = OK;
  • while ((lignes < DIM) && (*err = OK))
  • {
  • while ((colonnes < DIM) && (*err = OK))
  • {
  • if (matrice[lignes][colonnes] < 0)
  • {
  • *err = ERREUR;
  • }
  • colonnes++;
  • }
  • lignes++;
  • }
  • /* A : la matrice est initialisée avec des entiers >= 0 */
  • if (*err == OK)
  • {
  • for (lignes = 0; lignes < DIM; lignes++)
  • {
  • for (colonnes = 0; colonnes < DIM; colonnes++)
  • {
  • printf("%5d", matrice[lignes][colonnes]);
  • }
  • printf("\n");
  • printf("\n");
  • }
  • }
  • /* A : l'affichage de la matrice à été correctement réalisé */
  • }
/****************************************/
/* trianglepascalrecursif.c				
/*										
/* v1.0									
/*										
/* 16 / 12 / 2005						
/*										
/* maiskisuije@hotmail.com				
/*										
/****************************************/

#include <stdio.h>

#define DIM 9

typedef enum{OK,ERREUR};

void initialisation (int matrice[DIM][DIM], int *err);
/*
 *
 */

void triPascal (int p[DIM][DIM], int i, int j);
/*
 *
 */

void affichageMatrice (int matrice[DIM][DIM], int *err);
/*
 *
 */


int main (void)
{/*
  *	Bloc B1   : main 
  *	objectif  : calculer et afficher le triangle de pascal
  *	méthode   : additions successives (opérateur arithmétique +), périphérique de sorties
  *	besoin    : mPascal une matrice, x,y deux entiers, DIM
  *	connu     : DIM 8
  *	entrée    : ---
  *	sortie    : ---
  *	résultat  : affichage de la construction du triangle de pascal
  *	hypothèse :  x et y sont deux entiers >=0 */

	int x = 0; /* entier pour les lignes de la matrice */
	int y = 0; /* entier pour les colonnes de la matrice */
	int mPascal[DIM][DIM]; /* une matrice de dimension DIM * DIM */
	int erreur; /* pour la gestion des erreurs */


	/* initialiser une matrice (void Bloc B2) */
	initialisation ( mPascal, &erreur);
	/* A : mPascal une matrice de dimension DIM*DIM à été initialisée */
	if (erreur == OK)
	{
		/* calculer les éléments du triangle de pascal (voir Bloc B3) */
		triPascal(mPascal, x, y);
		/* A : les éléments du triangle de pascal ont été calculés */
			
		/* afficher une matrice  (voir Bloc B4) */
		affichageMatrice (mPascal, &erreur);
		/* A : mPascal une matrice de dimension DIM*DIM a été affichée */
		if (erreur != OK) 
		{
			printf("\n! Une erreur s'est produite lors de l'affichage du triangle de pascal.\n");
		}
	}
	else
	{
		printf("\n! Une erreur s'est produite lors de l'initialisation de la matrice.\n");
	}
	/* A : le calcul et l' affichage du triangle de pascal à été effectué */
	return 0;
}


void initialisation (int matrice[DIM][DIM], int *err)
{/*
  *	Bloc B2   : initialisation 
  *	objectif  : initialiser une matrice
  *	méthode   : en remplissant la diagonale principale avec des 1 et le reste avec des 0
  *	besoin    : matrice une matrice d'entiers >= 0, DIM
  *	connu     : DIM 8
  *	entrée    : matrice une matrice
  *	sortie    : matrice une matrice d'entiers >= 0
  *	résultat  : *err = OK si l'initialisation s'est bien déroulée 
  *	hypothèse : matrice fait référence à une matrice d'entiers */

	int lignes; /* entier pour les lignes de la matrice */
	int colonnes; /* entier pour les colonnes de la matrice */


	for (lignes = 0; lignes < DIM; lignes++)
	{
		for (colonnes = 0; colonnes < DIM; colonnes++)
		{
			if (lignes == colonnes) 
			{
				matrice[lignes][colonnes] = 1;
			}
			else
			{
				matrice[lignes][colonnes] = 0;
			}
		}
	}
	*err = OK;
	/* A : matrice une matrice d'entiers de dimension DIM * DIM a été initialisée */
}


void triPascal (int p[DIM][DIM], int i, int j)
{/*
  *	Bloc B3   : triPascal
  *	objectif  : calculer les éléments du triangle de pascal
  *	méthode   : additions successives (opérateur arithmétique +)
  *	besoin    : p une matrice d'entiers >= 0, i, j deux entiers >= 0, DIM 8
  *	connu     : DIM
  *	entrée    : p une matrice, i, j deux entiers >= 0
  *	sortie    : p une matrice contenant des nombres entiers
  *	résultat  : *err = OK si les hypothèses sont réspéctées
  *	hypothèse : la matrice est intialisée */


	/* A : la matrice est initialisée */

	if ((i < 0) || (j < 0)) return;

	if(i == DIM) return;

	if (i != j)
	{
		if (((i - 1) >= 0) && ((j - 1) >= 0)) p[i][j] = p[i - 1][j] + p[i - 1][j - 1];

		else if ((i - 1) >= 0) p[i][j] = p[i - 1][j];

		triPascal (p, i, j + 1);
	}
	triPascal (p, i + 1, 0);
}


void affichageMatrice (int matrice[DIM][DIM], int *err)
{/*
  *	Bloc B4   : affichageMatrice 
  *	objectif  : afficher une matrice
  *	méthode   : périphérique de sortie
  *	besoin    : matrice une matrice d'entiers >= 0, DIM
  *	connu     : DIM 8
  *	entrée    : matrice une matrice
  *	sortie    : ---
  *	résultat  : *err = OK si l'affichage à été bien réalisé
  *	hypothèse : la matrice est initialisée avec des entiers >= 0 */

	int lignes = 0; /* entier pour les lignes de la matrice */
	int colonnes = 0; /* entier pour les colonnes de la matrice */

	*err = OK;

	while ((lignes < DIM) && (*err = OK))
	{
		while ((colonnes < DIM) && (*err = OK))
		{
			if (matrice[lignes][colonnes] < 0)
			{
				*err = ERREUR;
			}
			colonnes++;
		}
		lignes++;
	}
	/* A : la matrice est initialisée avec des entiers >= 0 */

	if (*err == OK)
	{
		for (lignes = 0; lignes < DIM; lignes++)
		{
			for (colonnes = 0; colonnes < DIM; colonnes++)
			{
				printf("%5d", matrice[lignes][colonnes]);
			}
			printf("\n");
			printf("\n");
		}
	}
	/* A : l'affichage de la matrice à été correctement réalisé */
}

 Conclusion

Faites varier DIM pour faire varier le degré du polynome.


 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip ANALYSEUR SYNTAXIQUE DU LANGUAGE PASCAL (ANALYSE DESCENDANTE... par wiseman1989
AFFICHAGE D'UN TRIANGLE ISOCELE par nabche
TRIANGLE DE PASCAL ET DEVELLOPEMENT DE POLYNOME par Individu
Source avec Zip Source avec une capture FRACTALE DE SIERPINSKI par BCedric
[C - ANSI] - EXEMPLE D'UTILISATION DES POINTEURS DE FONCTION... par jean84

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Besoins d'aide pour faire un algorythme du triangle de pascal en C?? [ par Gokuan ] Hello tout le monde, Voilà, il faut que je fasse l'algorythme qui me permet de calculé le triangle de Pascal, mais j'essai mais je n'y arrive pas, al Triangle de Pascal [ par nadias ] Salut à tous,J'essais de traiter cette exercice mais je ne sais vraiment pas comment proceder.Pourriez-vous SVP m'aider.Je ne demande pas une solution Triangle de Pascal [ par choucroutes ] bonjour je débute en algorithme serait t il possible de m apporter quelque information sur cet exercice merci.< triangle de Pascal [ par philouxy ] Bonsoir à tous, voilà je me remets gentillement à la programmation, et je fais mes premiers pas en C++. En voulant reprendre un ancien exercice sur l programme qui affiche un triangle [ par laguchori ] Bonjour , J'ai un projet à faire qui consiste à créer une classe ligne et la tracer à partir de deux point et ensuite créer une Class triangle dérivée language c ][principe recursif [ par marie0marie ] bonjour , je besoin de programme qui multiplie les deux entiers positifs a et b selon le principe récursif suivant: A*b=a*(b-1)+a si b est impaire A* GESTIONS DES FICHIERS ETUDIANTS [ par harrysw980 ] Bonjour, Bonsoir à tous et à toutes . C'est avec un grand respect que je vous écrit ce mail. Après plusieurs recherches sur le net concernant mon exe compilateur pascal en c [ par 011987 ] salut mes frere j'ai um problem J'espère que vous m'aider : j'essaie de programmer un programme en c qui fait le role d'un compilateur pascal et merci


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales