Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

triangle de pascal

Posté par
kenfack
12-05-15 à 03:56

salut
j'aimerai une aide pour le probleme suivant : ecrire un programme pascal qui lit un entier n et affiche le triangle de pascal de profondeur n

Posté par
luzak
re : triangle de pascal 12-05-15 à 08:49

Bonjour !
Si c'est du Pascal pur jus, comme tu n'as pas droit à des tableaux dynamiques il faudra imposer un contrôle à la saisie de n.
Je suppose que tu sais faire une boucle (1<=k<=n) et déclarer un tableau :

const nmax=100;
var ligne : array[0..nmax] of integer;
    j,k,n : integer;

un algorithme possible : je te laisse les détails.
Lecture de n et rejet des mauvaises réponses
Tu initialises la ligne 1. ligne[0]:=1;ligne[1]:=1;
    Ecriture du tableau ligne (deux termes)
    Pour k allant de 2 à n :
     pour j allant de 1 à k, faire ligne[j]=ligne[j-1]+ligne[j] fin de boucle j
     Écriture du tableau ligne (k+1 termes)
    fin de boucle k

Posté par
mathafou Moderateur
re : triangle de pascal 12-05-15 à 11:33

Bonjour,

un tel algorithme ne fonctionne évidemment pas, de son principe même.
(il y a trop de "détails" qui sont en vrai des erreurs de principe)

parce que quand on veut calculer par exemple
ligne[3]=ligne[2]+ligne[3] l'élément ligne[2] a déja été détruit dans l'exécution de la boucle précédente
(quand on a calculé ligne[2]=ligne[1]+ligne[2])

de plus pour l'élément k, le dernier de la ligne, l[k] n'est pas défini du tout, donc il est impossible de calculer
ligne[k-1]+ligne[k]

les "détails" (de principe) consistent donc à initialiser ligne[k] avant de rentrer dans la boucle sur j
et dans la boucle sur j de rajouter un mécanisme (donc une variable supplémentaire) de sauvegarde de la valeur de ligne[j] avant de le détruire

Posté par
kenfack
re : triangle de pascal 15-05-15 à 13:49

l'enseignant nous interdit les tableaux. y'a til pas une autre méthode
j'ai déjà défini la fonction factorielle et combinaison et je suis ensuite à cour d'idée. MERCI

Posté par
mathafou Moderateur
re : triangle de pascal 15-05-15 à 14:39

Je ne comprends pas pourquoi tu te poses la question ???
si tu as déja défini ta fonction combinaison, où donc est le problème ?????
écrire la simple boucle ci-dessous quelle que soit la réalisation interne de ta fonction C(n,p) !

pour k de 1 à n {
pour i de 0 à k {
afficher C(k, i)
}
passer à la ligne
}

à traduire en syntaxe Pascal

On peut définir la fonction C(n, p) de façon récursive (qui s'appelle elle même)
ce qui revient à planquer les tableaux à l'intérieur de la pile d'appel
et à recalculer plusieurs fois des C(n,p) déja calculés puisqu'on ne mémorise rien (pas de tableaux explicites déclarés) et qu'on recalcule tout à chaque C(k,i) que l'on calcule.
mais bon,.. le prof est content : tu n'utilises pas de tableaux (explicitement déclarés) et tu as fait un programme parfaitement inefficace (mais très court)



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !