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 :

Calculer A puissance n sans utiliser ni puissance ni multiplication


Sujet :

Pascal

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Calculer A puissance n sans utiliser ni puissance ni multiplication
    Bonjour

    J'ai un petit problème.

    Ecrire un programme (Pascal) qui calcule et affiche A puissance n (sans utiliser l'opération de puissance ni de multiplication) (A et n sont des entiers).

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    j'ai trouvé la methode, mais je ne sais pas comment la traduire en pascal
    ex: 2^5=32
    2²=2+2=4
    2^3=4+4=8
    2^4=8+8=16
    2^5=16+16=32

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 26
    Points
    26
    Par défaut
    salut ,
    je pense que tu peux calculer la puissance d'une façon récursive
    exemple
    2^5=16+16=32 =2*(2^4)
    2^4=8+8=16=2*(2^3)
    2^3=4+4=8 =2*(2^2)
    (2^2)=2+2=4=2*(2^1)
    (2^1)=2=2*(2^0)
    (2^0)=1

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    shl ?

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gae,
    Citation Envoyé par Andnotor Voir le message
    shl ?
    Attention à ne pas se polariser sur les puissances de 2 (à ce titre, l'exemple choisi par adelkobe n'est pas très judicieux).
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    Genre en pseudo-code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function myPow(int p, int n): int
    begin
    if(n == 0) return 1;
    if(n < 0) error;
    int tmp = myPow(p, n-1);
    int result = 0;
    for(int i=0; i<p; i++) {
         result += tmp;
    }
    return result;
    end;

  7. #7
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    et tu peux pas te faire ta fonction multiplier avec des +. comme ça, tu n'utilise ni les * ni les puissance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    program puissance;
     
    uses crt,
     
    function multiplication(a,b : integer) : integer; //que des entiers
    var
      i : integer;
      resultat : integer;
    begin
      for i := 1 to b do 
      begin
        inc(resultat,a);
      end;
      multiplication := resultat;
    end;
     
    function puissance(a,b : integer) : integer;
    i,resultat : integer;
    begin
      for i := 1 to b do
      begin
        resultat = multiplication(resultat,a);
      end; 
      puissance := resultat;
    end;
     
    begin
      writeln(puissance(4,3));
    end.

    je sais pas si t'a le droit, mais comme tu fabriques tes fonctions, peut être que ça passe.

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Fia,
    Citation Envoyé par bhamp0 Voir le message
    Genre en pseudo-code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function myPow(int p, int n): int
    begin
    if(n == 0) return 1;
    if(n < 0) error;
    int tmp = myPow(p, n-1);
    int result = 0;
    for(int i=0; i<p; i++) {
         result += tmp;
    }
    return result;
    end;
    Même en pseudo-code, tu devrais vérifier ce que tu as écrit.
    Si les cons volaient, il ferait nuit à midi.

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Qua,
    Citation Envoyé par titeeee Voir le message
    et tu peux pas te faire ta fonction multiplier avec des +. comme ça, tu n'utilise ni les * ni les puissance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    program puissance;
     
    uses crt,
     
    function multiplication(a,b : integer) : integer; //que des entiers
    var
      i : integer;
      resultat : integer;
    begin
      for i := 1 to b do 
      begin
        inc(resultat,a);
      end;
      multiplication := resultat;
    end;
     
    function puissance(a,b : integer) : integer;
    i,resultat : integer;
    begin
      for i := 1 to b do
      begin
        resultat = multiplication(resultat,a);
      end; 
      puissance := resultat;
    end;
     
    begin
      writeln(puissance(4,3));
    end.

    je sais pas si t'a le droit, mais comme tu fabriques tes fonctions, peut être que ça passe.
    Attention a bien initialiser les variables avant utilisation (resultat dans la fonction multiplication, dans l'état actuel, résultat faux garanti).
    Si les cons volaient, il ferait nuit à midi.

  10. #10
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    Dam oui, j'ai pas compiler et j'ai fais ça en mangeant, du coup j'ai pas initialisé resultat. Mais dans mon code, il est égal à 1 pour la multiplication et à 0 pour l'addition. De plus, j'aurais eu un warning.

    Par contre, ça fais longtemps que je me demande :

    Citation Envoyé par droggo Voir le message
    Qua,
    Y'a une logique, ou c'est 3 lettres au hasard ?

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Citation Envoyé par titeeee Voir le message
    Y'a une logique, ou c'est 3 lettres au hasard ?
    Non y'a effectivement une logique, suffit de trouver laquelle. Ca pourrait faire l'objet du Défi 2012 hein ?
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  12. #12
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    je déclare forfait pour le défi pascal 2012

  13. #13
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    Citation Envoyé par droggo Voir le message
    Même en pseudo-code, tu devrais vérifier ce que tu as écrit.
    Et tu pourrais m'expliquer où j'ai faux ?
    J'ai fait du (Turbo)Pascal il y a très longtemps, donc je sais que ça n'en est pas. Mais en pseudo-code, je ne vois pas d'erreurs particulières.

  14. #14
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Weu,
    Citation Envoyé par bhamp0 Voir le message
    Et tu pourrais m'expliquer où j'ai faux ?
    J'ai fait du (Turbo)Pascal il y a très longtemps, donc je sais que ça n'en est pas. Mais en pseudo-code, je ne vois pas d'erreurs particulières.
    Eh bien, relis et teste ton code manuellement.
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. Thinker Thing crée des objets 3D en utilisant la puissance de votre cerveau
    Par Stéphane le calme dans le forum Actualités
    Réponses: 4
    Dernier message: 30/05/2013, 09h52
  2. Réponses: 0
    Dernier message: 20/04/2011, 14h51
  3. utiliser la puissance 2 en dehors d'une expression mathématique
    Par clemarch dans le forum Mathématiques - Sciences
    Réponses: 3
    Dernier message: 17/03/2008, 11h05
  4. Utiliser des puissances de dix
    Par s.n.a.f.u dans le forum Cobol
    Réponses: 3
    Dernier message: 22/06/2007, 22h38
  5. Calculer le modulo sans utiliser l'operateur %
    Par candidson dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 07/06/2007, 18h35

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