Triangle de pascal en c

Contenu du snippet

Ceci est un code très simple pour débutant. Il utilise le principe du simple calcul sans passer par les combinaisons.
Bon prog!

Source / Exemple :


#include <stdio.h>								//la bibliothèque standard
#include <stdlib.h>								//bibliothèque de fonctions d'allocation

int entreedim();
int **matrice(int n,int m);
void entree ( int **a,int n,int m);
void affiche( int **a, int n);
void erreur (char *message);

int main()
{
	int **a, n;

	n = entreedim();		//entrer la dimension du triangle
	a = matrice (n,n);		//on travaille sous forme de matrice
	entree ( a, n, n);		//entrer les nombres
	affiche (a, n);			//affichage

	return 0;
}

int entreedim()
{
	int n;
	printf("\n Entrer l'ordre du triangle:");
	scanf("%d",&n);			//saisie de la dimension
	return n;
}

int **matrice(int n,int m)
{
	int *bloc, **v;
	int i;

	bloc = (int **)calloc (n*m,sizeof(int *));		//allocation d'un long bloc
	if (!bloc)
	{
		erreur("Erreur d'allocation du vecteur");
		exit(1);
	}

	v = (int*)calloc(n,sizeof(int));				//découper le bloc en plusieurs vecteurs
	if(!v)
	{
		erreur("Erreur de découpage du bloc");
		exit(1);
	}

	for (i=0; i<n; i++)								//attribuer chaque vecteur en une colone de matrice
		v[i] = &bloc[i*m];

	return v;
}

void entree ( int **a,int n,int m)
{
	int i,j;

	for (i=0; i<n; i++)
	{
		a[i][0] = 1;
		a[i][i] = 1;
	}

	for (i=1; i<n; i++)
	{
		for (j=1; j<=i; j++)
		{
			a[i][j] = a[i-1][j-1] + a[i-1][j];		//Selon le bon vieux principe arithmétique
		}
	}
}

void affiche( int **a, int n)
{
	int i,j;

	for (i=0; i<n; i++)
	{
		for (j=0; j<=i; j++)
			printf("%d\t",a[i][j]);
		printf("\n");
	}
}

void erreur(char *message)							//Pour les messages d'erreurs
{
	printf("%s",message);
}

Conclusion :


Toute modification sera la bienvenue., surtout pour y ajouter une interface graphique.Merci!
aliaz_li@yahoo.fr

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.