Puissances de 2
blastus
-
pseudo -
pseudo -
Bonjour,
je butes sur une fonction , j ai constament un message d 'erreur du compilateur ...
c est une fonction qui ai censé décomposer un nombre en puissances de 2 . par exemple dans ce cas 107
pour que cela donne 2 puissance 6 +2 puissance 5 + 2 p3 + 2 +1
par avance merci pour vos conseils .
Cordialement
public class ok {
public static void main ( String[] args ){
/* fonction qui doit decomposer un nombre en puissances de 2 sous la forme 2 puissance 6 + 2 puissance 5 + n .... + 2 + 1 et rentrer ces valeur dans un tableau */
/* dB etant le nombre à decomposer */
int i=0,p=0,reste,dB=107;
reste=dB;
int t[] ;t=new int[10];
while (reste!=0)
while (Math.pow(2,p)<reste){
p=p+1;}/*premiere boucle s'arretant dés que la puissance apliqué à 2 donne un nombre qui dépasse dB*/
p=p-1;/* bou de code sancé rentrer dans la case du tableau la valeur trouvé , et : remet la puissance à 0 , deduis le prochain reste sur lequel la boucle while du haut vas chercher
la puissance */
t[i]=(int)Math.pow(2,p);
p=0;
reste=reste-t[i];
i=i+1;
}
}
je butes sur une fonction , j ai constament un message d 'erreur du compilateur ...
c est une fonction qui ai censé décomposer un nombre en puissances de 2 . par exemple dans ce cas 107
pour que cela donne 2 puissance 6 +2 puissance 5 + 2 p3 + 2 +1
par avance merci pour vos conseils .
Cordialement
public class ok {
public static void main ( String[] args ){
/* fonction qui doit decomposer un nombre en puissances de 2 sous la forme 2 puissance 6 + 2 puissance 5 + n .... + 2 + 1 et rentrer ces valeur dans un tableau */
/* dB etant le nombre à decomposer */
int i=0,p=0,reste,dB=107;
reste=dB;
int t[] ;t=new int[10];
while (reste!=0)
while (Math.pow(2,p)<reste){
p=p+1;}/*premiere boucle s'arretant dés que la puissance apliqué à 2 donne un nombre qui dépasse dB*/
p=p-1;/* bou de code sancé rentrer dans la case du tableau la valeur trouvé , et : remet la puissance à 0 , deduis le prochain reste sur lequel la boucle while du haut vas chercher
la puissance */
t[i]=(int)Math.pow(2,p);
p=0;
reste=reste-t[i];
i=i+1;
}
}
A voir également:
- Puissances de 2
- Supercopier 2 - Télécharger - Gestion de fichiers
- 2 ecran pc - Guide
- Gta 6 trailer 2 - Guide
- Word numéro de page 1/2 - Guide
- Faire 2 colonnes sur word - Guide
1 réponse
Bonjour,
Quel est le message du compilo. ?..
Remarque :
public class ok {
public static void main ( String[] args ){
--> Je ne pense pas qu'envelopper le main() dans une classe fonctionne mais bon (:>)..
En générale c'est cette structure :
public class ok { ...}
Puis :
public static void main ( String[] args )
{
--> Instanciation classe ok + traitements
}
Quel est le message du compilo. ?..
Remarque :
public class ok {
public static void main ( String[] args ){
--> Je ne pense pas qu'envelopper le main() dans une classe fonctionne mais bon (:>)..
En générale c'est cette structure :
public class ok { ...}
Puis :
public static void main ( String[] args )
{
--> Instanciation classe ok + traitements
}
En effet, tu ne vérifies pas la valeur de "p" avant de la décrémenter, tu te te retrouve donc avec un p = "-1" et tu ne sors jamais de la boucle. ce qui fait crasher ta JVM par débordement de pile.
Solution (ligne 10)
if(p>0){
p=p-1
}
au lieu de
p=p-1