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 :

Algorithme qui me permet de calculer la puissance d'un nombre


Sujet :

Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut Algorithme qui me permet de calculer la puissance d'un nombre
    Bonsoir , je cherche un algorithme qui me permet de calculer la puissance d'un nombre , par exemple y^a .

    Je propose çà j'aimerais votre avis :

    Si a > 0
    x = y*y
    y = y + a //incrémentation de l'opération suivant la valeur de n

    Je pense que mon algo est faux , qu'en pensez vous ?

    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Euh oui. Petite indice : y^a, c'est y * y * y * y *......, a fois

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    oui merci worm je connais quand meme l'opération puissance je suis pas si nulle lol , le problème c'est que je ne sais pas si en pascal on peut implémenter une opération de type y*y...n fois

  4. #4
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    bonjour
    Citation Envoyé par Maxence45
    le problème c'est que je ne sais pas si en pascal on peut implémenter une opération de type y*y...n fois
    Si, tu as le choix: par exemple tu pourais faire une boucle iterative qui te multiplie n fois le meme nombre

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par défaut
    Bonjour,
    Citation Envoyé par Maxence45
    oui merci worm je connais quand meme l'opération puissance je suis pas si nulle lol , le problème c'est que je ne sais pas si en pascal on peut implémenter une opération de type y*y...n fois
    Comme te l'a rappelé krachik, les boucles sont faites pour être utilisées.

    Si je me souviens bien, tu t'en es déjà servi dans d'autres programmes,
    par exemple
    http://www.developpez.net/forums/sho...d.php?t=281599
    alors pourquoi ne pas avoir l'idée de le faire ici ?

    Plus proche du problème:
    Pour calculer y^a, il va falloir distinguer les cas.

    - a doit-il toujours être entier ? (s'il peut être réel, ça change la manière de calculer)

    - y peut-il être <= 0 ?

    - dans tous les cas, a peut-il être < 0 ?

    bref, si tu veux que ta fonction puisse traiter tous les cas, une simple boucle ne suffira pas.

    Revenons à ce que tu veux faire, si j'ai bien compris !

    y > 0, a entier >=0

    alors tu peux faire, si on néglige de contrôler la validité des données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function puissance(y :  real; a : integer) : real;
    var
      i : integer;
      result : real;
    begin
      result :=1;
      for i:=1 to a do result := result * y;
      puissance := result;
    end;
    ça marche aussi pour a = 0, car y^0 = 1;

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    merci thew mais si tu m'envois du code tout fait autant que j'arrête de bosser , donc je préfère pas le lire tu me comprends je suis sûre . Puis je ne souhaite pas tout gérer comme tu le dis , je veux vraiment faire le truc le plus simple , donc moi je commence par çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function Puissance(y: INTEGER; a: Cardinal): INTEGER;
    begin
    var i: INTEGER;
    for i := 1 to a do
    y := y*y;
    J'explique mon code donc je déclare une variable i qui parcourt la boucle , et tant que cette variable n'est pas égale à n , je multiplie y par y , çà se tient ?

    merci

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par défaut
    Bonjour,

    Désolé pour le code, ce n'est pourtant pas mon habitude.

    Citation Envoyé par Maxence45
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function Puissance(y: INTEGER; a: Cardinal): INTEGER;
    begin
    var i: INTEGER;
    for i := 1 to a do
    y := y*y;
    J'explique mon code donc je déclare une variable i qui parcourt la boucle , et tant que cette variable n'est pas égale à n , je multiplie y par y , çà se tient ?
    Ben non, ça ne se tient pas.

    Analyse ce qui se passe à la main:

    on appelle la fonction avec, par exemple y = 2, a =3
    avec la boucle i = 1 à 3, on va obtenir
    1er tour y=y*y ==> y = 2*2 = 4
    2ème tour y=y*y ==> y = 4*4 = 16
    3ème tour y=y*y ==> y = 16*16 = 256

    Ce qui n'est pas ce que l'on veut obtenir (2^3 = 8)

    Eh oui, tu es obligé d'utiliser une variable locale

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/08/2014, 22h36
  2. Réponses: 12
    Dernier message: 10/05/2013, 15h45
  3. algorithme qui calcul la matrice de coocurence
    Par takfa2008 dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 13/11/2008, 09h41
  4. [Erreur] algorithme qui calcul une moyenne
    Par quaresma dans le forum Algorithmes et structures de données
    Réponses: 29
    Dernier message: 24/04/2008, 20h58
  5. Algorithme qui calcule la racine de F(x) par la méthode de dichotomie
    Par autoin dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 09/01/2008, 14h28

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