Tom's Guide > Forum > Programmation > Exercice trés simple Algorithme : Besion d'aide svp

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

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

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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:)


Message édité par Kenny999 le 03-10-2007 à 18:18:42
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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. :)

------------------------------ Sethpolma
Répondre à Sethpolma

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 ?

Répondre à Kenny999

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.

------------------------------ Sethpolma
Répondre à Sethpolma

/!\ 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.

------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR
Tom's Guide > Forum > Programmation > Exercice trés simple Algorithme : Besion d'aide svp
Aller à :

Il y a 1392 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens