Puissances de 2 java

[Fermé]
Signaler
Messages postés
52
Date d'inscription
lundi 30 août 2010
Statut
Membre
Dernière intervention
2 décembre 2012
-
Messages postés
16409
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 octobre 2021
-
Bonjour,

j'essaie de faire un programme faisant des puissances de 2,
mais le problème est que pendant l'incrémentation il ne met pas la valeur du résultat à jour pour le multiplier par lui même comme ceci; SOS


public class puissance
{



public static void main (String[] args)

{
int i;
int n = 4;
int base = 2;
int expo = 0;
for (i = 0; i<n; i++)
{

expo = base * base;





System.out.println (expo);}


}
}


A voir également:

5 réponses

Messages postés
52
Date d'inscription
lundi 30 août 2010
Statut
Membre
Dernière intervention
2 décembre 2012
2
j'arrive maintenant à 16, mais ce n'est en fonction du nombre de tour,

car j'ai remplacé n par 3 et j'arrive toujours à 16, à mon avis je ne suis pas du tout dans la bonne direction lol

public class puissance
{



public static void main (String[] args)

{
int i;
int n = 4;
int base = 2;
int expo = 0;
for (i = 0; i<n; i++)
{

expo = base * base;

System.out.println (expo);}
expo = expo * expo;
System.out.println (expo);



}
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
16409
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 octobre 2021
2 901
"il ne met pas la valeur du résultat à jour pour le multiplier par lui même"
Tout est dit, regarde ton code : expo = base * base;
Le résultat c'est expo je pense. Où est-ce que tu fais la multiplication "par lui même" ?
Messages postés
52
Date d'inscription
lundi 30 août 2010
Statut
Membre
Dernière intervention
2 décembre 2012
2
c'est juste, je me suis mal exprimé

en fait je voudrais qu'à chaque incrémentation, il multiplie par 2 le nombre 2;

et donc qu'il conserve l'ancienne valeurs ,comment faire ;

ce n'est peut être pas la bonne solution, si vous en avez d'autres, elles sont les biens venues;)
Messages postés
16409
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 octobre 2021
2 901
Effectivement, à chaque tour de boucle tu multiplies bien 2 par 2, tu obtiens donc toujours 4...
Pour "conserver l'ancienne valeur", il faut que ce soit cette valeur que tu multiplies par 2, et ce n'est pas que tu fais... Je te laisse réfléchir encore un peu, relis toi bien !!!
Messages postés
52
Date d'inscription
lundi 30 août 2010
Statut
Membre
Dernière intervention
2 décembre 2012
2
en fait je crois que ça ne marche pas soit par ce que i++ = (1,2,3,4)
il faudrait donc trouver le moyen de faire (2 , 2, 2, 2) avec peut être i+=2

mais comment trouver la relation entre l'exposant et le nombre de tours avec ce 2eme cas
Messages postés
16409
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 octobre 2021
2 901
ça ne changerai rien du tout vu ton erreur.
Je pourrais te la corriger tout de suite, mais ce ne serait pas dans ton intérêt ;-)
Messages postés
16409
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 octobre 2021
2 901
En effet tu ne pars pas dans la bonne direction.

Réfléchis un peu plus à qu'est-ce qui est variable et qu'est-ce qui est constant.
En plus de ça ton "indentation" t'induit en erreur en te faisant croire que tout ce que tu modifies est dans ta boucle alors que tu as un } juste après ton premier println et ça change tout (enfin ça resterai faux quand même avec le code dans la boucle)

Mets toi à la place de l'ordinateur et regarde ce que fais ton code ligne par ligne :

n=4 
base=2 
expo=0 
i=0 

i<n --> 0<4 --> true 
expo=base*base --> expo = 2*2 --> expo=4 
println(expo) --> 4 
i++ --> i=1 

i<n --> 1<4 --> true 
expo=base*base --> expo = 2*2 --> expo=4 
println(expo) --> 4 
i++ --> i=2 

i<n --> 2<4 --> true 
expo=base*base --> expo = 2*2 --> expo=4 
println(expo) --> 4 
i++ --> i=3 

i<n --> 3<4 --> true 
expo=base*base --> expo = 2*2 --> expo=4 
println(expo) --> 4 
i++ --> i=4 

i<n --> 4<4 --> false 

expo=expo*expo --> expo = 4*4 --> expo=16 
println(expo) --> 16

La confiance n'exclut pas le contrôle