IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

Calcul de la factorielle d'un nombre naturel


Sujet :

Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Par défaut Calcul de la factorielle d'un nombre naturel
    Bonjour, je suis étudiant en première année de licence informatique, et j'ai un problème afin de résoudre un exercice. Voici mon problème ..

    Le but est d'établir la preuve d'un programme pascal, un algorithme de calcul de la factorielle d'un naturel.

    l'assertion P est :

    k <= n
    n et la valeur de k sont de meme parité
    q = (k-1)k
    f = k!

    la condition C est :

    k < n

    Et I l'instruction :

    begin
    q := q + 4*k +2
    f := f*q
    k := k+2
    end

    La question est : Quelles valeurs donner aux variables k,q et f avant l'execution de la boucle pour qu'à la terminaison de celle-ci la valeur de la variable f soit n!

    J'ai essayé de partir de l'état final ( f = n!, d'ou k =n .. ), mais je n'arrive pas à avancer ..

    Merci d'avance de votre aide.

  2. #2
    Membre Expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Par défaut
    Bonjour,

    Il va fallir exposer un peu mieux ton problème, parce que tel quel, il est incompréhensible.
    Quelle est la boucle ? Où est le programme ? Il n'y a pas d'entrée, pas de sortie...

    Bref, là, on ne peut rien pour toi.

    @++

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Par défaut
    Merci quand même d'avoir pris la peine de répondre, mais j'ai fini par comprendre. . Si on prend k = n mod 2, f = 1, et q = 0, ca marche. Voici un exemple si certaines personnes en trouveront l'utilité un jour :

    Exemple pour n = 0:0! = 1

    k = n mod 2 = 0;
    f = 1;
    q = 0;
    la condition k < n est fausse, donc la boucle n'est pas executée.
    résultat: f = 1 = 1!

    exemple pour n = 3:3! = 6

    k = n mod 2 = 1;
    f = 1;
    q = 0;
    la condition k < n est vraie, donc boucle est executée:
    q := q + 4*k +2 = 6;
    f := f * q = 6;
    k := k+2 = 3;

    la condition k < n est fausse, donc boucle s'arrête.
    résultat: f = 6 = 3!

    Et ainsi de suite...

  4. #4
    Membre émérite Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Par défaut
    euh il y a beaucoup plus simple pour faire un calcul de factorielle

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Par défaut
    Oui il y a plus simple, mais cet algorithme diminue sensiblement le nombre de multiplications entre entiers en comparaison de l'algorithme usuel .. Qui était le principe de l'exercice.

  6. #6
    Membre très actif
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Par défaut bonjour,
    il y'a beacoup plus simple franchement le calcule d'un factoriel se fait en une seule ligne de code enfin presque..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    n!:=n(n-1)*(n-2)****1;
    pourqoi faire une boucle se compliquer la vie
    ecrire l'algorithme d'un programme se resume aussi a gagner du temp
    pour ta solution elle est juste j'ai pas bien compri le but de l'exercise
    ps:j'ai rien compri a ton programme parfoi tu met des affectation parfoi des egalité
    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calculer le factorielle d'un nombre (Dev-C++)
    Par Matadox dans le forum Débuter
    Réponses: 9
    Dernier message: 03/02/2014, 00h51
  2. Calculer la factorielle d'un nombre en C
    Par planete.game57 dans le forum Débuter
    Réponses: 26
    Dernier message: 19/10/2009, 23h12
  3. script samba qui calcule le factoriel d'un nombre entier
    Par miryam22 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 30/05/2008, 10h00
  4. Prog pour calculer la factorielle d'un nombre
    Par Lenezir dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2007, 09h42
  5. factoriel d'un nombre
    Par etoile1506 dans le forum C
    Réponses: 10
    Dernier message: 03/12/2005, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo