[PASCAL]: Sommation de factorielles

Fermé
xmaster - 18 janv. 2010 à 21:32
 xmaster - 19 janv. 2010 à 18:50
Bonjour,
j'ai un probleme à resoudre en pascal
ecrire une traduction en pascal qui calcule la somme s= 1!+2!+3!+......................+ n! (factoriel)
j'ai fait une mais ca donne des resultats fausses. merci d'avance :)

program facto;
uses wincrt;
var i,j,x,y:integer;n:integer;

begin
repeat
write('donner un nombre');readln(n);
until (n>=0);
x:=1 ; y:=0;
if n=0 then
write (n,'!=1')
else begin
for i:=1 to n do
begin
for j:=1 to i do
begin
x:=x*j;
y:=y+b;x:=1;
end;
end;

write (y); end;
end.
A voir également:

2 réponses

merci beaucoup!!!!!!!!!

j'ai un probleme que j'ai pas trouver aucune solution et me semble impossible a resoudre
(si ça vous derange pas) je veux savoir une methode pour le resoudre

probleme:
ecrire un programme qui dessine sur deux lignes, deux caracteres ' * ' (etoile)
sachant que l'un se deplace de la gauche vers la droite et l'autre de la droite vers la gauche;

merci d'avance!!
0
Salut

tu as le choix entre 2 voies :
1. je fais une somme de factorielles. Et comme la factorielle d'un nombre n'est pas forcément simple à écrire, je la case dans une fonction (récursive ou non) histoire de me simplifier l'écriture de mon programme principal
2. je note que pour chaque terme de ma somme, je pourrais disposer de (n-1)!. Ça pourrait grandement simplifier l'écriture: 2! = 2 * 1! => une fois 1! calculé, je le mets de côté en prévision du calcul de 2! ; ... ; une fois 18! calculé, je le mets de côté en prévision du calcul de 19! ; etc. Ainsi, arrivé à n!, je n'aurais fait que n-1 multiplications au lieu de n(n-1)/2 multiplications

=> pour l'option 1, vu que l'on utilise une fonction factorielle(x), l'écriture est :
somme <- 0
pour x variant de 1 à n
  terme <- factorielle(x)
  somme <- somme + terme
fin pour
que tu simplifieras aisément

=> pour l'option 2, on mémorise (n-1)!
somme <- 0
factorielle <- 1 car 0! vaut 1
pour x variant de 1 à n
  factorielle <- factorielle * x
  somme <- somme + factorielle
fin pour
tu notons qu'à aucun moment il n'est nécessaire de deux boucles imbriquées et que l'utilisation de variables avec des noms significatifs simplifie la lecture de celui qui découvre
-1