p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité régulier
    Étudiant
    Inscrit en
    juin 2011
    Messages
    29
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 29
    Points : 8
    Points
    8

    Par défaut progra newbie, élever à la puissance sans boucle

    Bonjour !

    Erf, je débute en programmation, et j'ai une série d'exercices à faire, mais je n'ai pas les solutions.
    C'est très bien, parce que ça me fait réfléchir, mais il y a cet exercice auquel... Je ne trouve vraiment pas de solution, et ça me gêne beaucoup...
    Si une âme charitable pouvait m'aider, ce serait vraiment très très très gentil...

    L'intitulé va sembler hyper facile à beaucoup de gens, j'imagine : il faut élever un nombre entré en input à la puissance 17 sans parcourir de boucle, ni utiliser **, et en utilisant le moins de * possible.
    (j'ai bien pensé utiliser pow, mais je suppose que ce n'est pas ça qu'il faut trouver ^^)

    -> Je me suis dit que peut-être il y avait quelque chose à chercher du côté des nombres pairs et impairs... ?! Mais j'avoue en fait que je sèche complètement.

    Écrire un programme qui affiche a17 (a lu sur input) en employant le moins de multiplications possibles, sans utiliser l’opérateur ** ni de boucle.
    Merci d'avance à la personne qui pourrait me mettre sur la voie

  2. #2
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : mai 2008
    Messages : 662
    Points : 1 254
    Points
    1 254

    Par défaut

    Allez, juste un petit indice*: x^8 = ((x^2)^2)^2; par ailleurs, 17 = 16+1…
    Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques

  3. #3
    Invité régulier
    Étudiant
    Inscrit en
    juin 2011
    Messages
    29
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 29
    Points : 8
    Points
    8

    Par défaut

    Merci pour le coup de main, mon intuition d'aller vers les nombres pairs n'a pas l'air si mauvaise

    Sympa, vraiment !
    Bonne journée !

  4. #4
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    6 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 6 678
    Points : 10 286
    Points
    10 286

    Par défaut

    Salut,
    Pourquoi ne pas coder en Python l'exemple donné en C ici?
    - W
    Architectures Post-Modernes

  5. #5
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : mai 2008
    Messages : 662
    Points : 1 254
    Points
    1 254

    Par défaut

    @wiztricks*: l’énoncé dit «*le moins de multiplications possibles, sans utiliser l’opérateur ** ni de boucle.*»
    Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques

  6. #6
    Invité régulier
    Étudiant
    Inscrit en
    juin 2011
    Messages
    29
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 29
    Points : 8
    Points
    8

    Par défaut

    Oui, justement, voilà pourquoi. Parce qu'avec une boucle, je vois bien, et avec pow, je vois bien aussi
    C'est vicieux ces exercices d'ailleurs ! ^^

    Bon, j'ai mis "résolu", j'ai pas encore codé, mais je pense avoir compris. Yaplukà...

  7. #7
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    6 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 6 678
    Points : 10 286
    Points
    10 286

    Par défaut

    Citation Envoyé par mont29 Voir le message
    @wiztricks*: l’énoncé dit «*le moins de multiplications possibles, sans utiliser l’opérateur ** ni de boucle.*»
    Oops. Désolé, pas facile pour moi d'avoir des réflexes de programmation en assembleur dans un forum Python.
    - W
    Architectures Post-Modernes

  8. #8
    Invité régulier
    Étudiant
    Inscrit en
    juin 2011
    Messages
    29
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 29
    Points : 8
    Points
    8

    Par défaut

    Voilà, juste... Je teste la validité de ce que j'ai fait, ça fonctionne, je ne sais pas si c'est "optimal"...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def elevation(a, puissance=17):
        resultat = 1
        if ( puissance == 1 ):
            resultat*=a
     
        elif (puissance//2>=1):
            resultat=a*elevation(a, puissance-1)
        return resultat
    ?
    En tout cas, ça doit correspondre à peu près à ça.
    Je suppose que ça, c'est dit "récursif", et qu'il y a moyen de le faire en itératif... ?!
    hum... ^^

    Merci encore pour le coup de main en tout cas

  9. #9
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : mai 2008
    Messages : 662
    Points : 1 254
    Points
    1 254

    Par défaut

    Moui… d’une certaine façon, tu vas au-delà de ce qui est demandé (ton code est générique), mais je ne sais par si la récursivité ne serait pas considérée comme un genre de boucle…

    En fait, je pensais plutôt à ça*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def pow_17(x):
        x2 = x * x
        x4 = x2 * x2
        x8 = x4 * x4
        return x8 * x8 * x
    Soit cinq multiplications en tout et pour tout*!
    Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques

  10. #10
    Invité régulier
    Étudiant
    Inscrit en
    juin 2011
    Messages
    29
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 29
    Points : 8
    Points
    8

    Par défaut

    ah ouais... Effectivement, je vais chercher midi à 14h, moi !
    M'étonne pas... ^^

    Je pense que ton idée correspond mieux à l'intitulé effectivement.

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

Discussions similaires

  1. [VBA-E] tester la valeur d'une plage de données sans boucle
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/04/2007, 08h36
  2. Comment élever à une puissance ?
    Par MeTaL_666 dans le forum C++
    Réponses: 6
    Dernier message: 09/11/2006, 01h25
  3. [VBA-E] Modifier le contenu d'un range sans boucle
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/04/2006, 11h19
  4. [SQL]Lever une exception sans planter le code
    Par Titouf dans le forum Oracle
    Réponses: 2
    Dernier message: 25/01/2006, 15h28
  5. créer des liens automatiquement mais sans boucle
    Par psychoBob dans le forum Syntaxe
    Réponses: 8
    Dernier message: 15/12/2005, 15h20

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