Votre question

Exercice trés simple Algorithme : Besion d'aide svp

Tags :
  • Cpt
  • Programmation
Dernière réponse : dans Programmation
3 Octobre 2007 18:15:16

Bonjour tout le monde,

Je suis en première année d'IUT en Informatique.
Et cela commence assez rapidement.
J'aurai besion d'une aide sur un petit exercice à faire en Algo. Je vous donne l'énoncé :

" Ecrire l'algorithme qui permet de calculer n! "
" Le faire trois fois en utilisant TQ / Répéter / Pour "

En fait je suis déjà bloquer au TQ :
Je vous donne ce que j'ai cogiter mais de toute manière je pense que c'est faux :

Glossaire :
Donnée : valn
Type : entier

Résultat : result
Type : entier

Traitement : cpt
Type : entier

Voici l'algorithme =

DEBUT
*Saisie de la valeur à traiter*
Afficher "Donnez la valeur pour pouvoir faire sa factorielle"
Saisir valn
*Saisie et traitement de la valeur choisie*
cpt <- 1
result <- 0
TQ cpt<valn FRE
result <- result+1 *cpt
cpt <- cpt+1
FTQ
FIN

Il faut dire que j'ai du mal à me visualiser comment on peux faire la factorielle.
Il est sur que c'est faux ce que j'ai fait mais j'aimerai que l'on m'aide pour le TQ mais aussi pour les autres.

Je vous remercie d'avance :) 

Cordialement,
Kenny

PS = Je dois faire cet exo pour demain, mais même si vous me donnez des conseils aprés-demain, ils ne seront pas perdus:) 

Autres pages sur : exercice tres simple algorithme besion aide svp

3 Octobre 2007 18:23:13

Hmm... La factorielle est le produit des n premiers entiers naturels. Or là, ta variable <i>result</i> est plutôt étrange. Prenons un exemple avec 2! :

cpt = 1 ; result = 0 ;
result <- 1 * 1 = 1
cpt <- 2

cpt = 2 ; result = 1;
result <- 2 * 2 = 4
cpt <- 3

On voit bien qu'il y a un problème. Ceci dit, je peux me tromper, n'étant que très peu familier à cette écriture.

Il suffit simplement de prendre le problème via la définition de la factorielle, ce qui donnerait quelquechose du style :

cpt <- 1
result <- 1

TQ cpt <= valn FRE
result <- result * cpt
cpt <- cpt + 1
FTQ

Par contre, je vois mal la différence entre les boucles TQ (while) et répéter... Quant à la boucle for (pour), c'est assez similaire.

En espérant t'avoir été utile. :) 
3 Octobre 2007 18:27:19

Merci pour ta réponse rapide.
En fait le Répéter je crois qu'on a vu que c'est l'équivalent du "Do ....While" en language C.

Sinon pour ce que tu as dit :
Je pense que c'est bon ce que tu as dit xD Mais il reste un problème que j'ai pas soulevé....
Par exemple : -3! Cela marche aussi et cela fait -6 .
Il faudrait donc faire deux cas à ce moment là sinon ?
Contenus similaires
3 Octobre 2007 18:31:48

La factorielle est définie pour les nombres négatifs ? Je savais pas. Dans ce cas, ce n'est pas bien difficile. Il suffit de rajouter un cas selon le signe de la variable, et de décrémenter le compteur jusqu'à atteindre la dite variable. Sinon, en réfléchissant un peu, il devrait être possible de ne faire qu'un seul cas, et en utilisant la valeur absolue.

signe <- cpt / | cpt |

Après, je sais pas trop comment ça marche, si tu as le droit de définir des fonctions.
a c 232 L Programmation
5 Octobre 2007 10:56:58

/!\ La fonction factorielle n'est pas définie pour les nombres négatifs /!\

Sinon, je dirais que la solution de sethpolma est correcte.
Perso, plutôt que de prendre un compteur qui s'incrémente, j'aurais décrémenté le compteur, mais bon, ça revient au même au final.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS