Problème retour variable
parousky
Messages postés
325
Date d'inscription
Statut
Membre
Dernière intervention
-
tksteph Messages postés 222 Statut Membre -
tksteph Messages postés 222 Statut Membre -
Bonjour, j'ai fait un simple algorithme qui doit renvoyer la partie entière d'un double d. Alors j'ai écris cet algorithme :
public int entiere(double d)
{
int i = 0;
int p =0;
while (i<d+1)
{
if(d-i>1)
i = i+1;
else
p = i;
}
return p;
}
Mais cet algo me renvoie toujours 0. Et je me dis que c'est parce que j'ai initialisé ma variable p à 0. Mais si je ne l'initialise pas, ça ne compile pas. Comment dois-je faire pour que ce programme renvoie le p qui a été modifié par la boucle while ?
Merci d'avance pour vos réponses ( comme vous pouvez le voir à ma question je suis débutant en java alors n'employez pas de termes trop compliqués svp ! )
public int entiere(double d)
{
int i = 0;
int p =0;
while (i<d+1)
{
if(d-i>1)
i = i+1;
else
p = i;
}
return p;
}
Mais cet algo me renvoie toujours 0. Et je me dis que c'est parce que j'ai initialisé ma variable p à 0. Mais si je ne l'initialise pas, ça ne compile pas. Comment dois-je faire pour que ce programme renvoie le p qui a été modifié par la boucle while ?
Merci d'avance pour vos réponses ( comme vous pouvez le voir à ma question je suis débutant en java alors n'employez pas de termes trop compliqués svp ! )
1 réponse
Bonjour ,
J'ai quelques doutes quant au résultat de ton Algo,
Je pense qu'il rentrera dans une boucle infinie à chaque fois. Ta condition dans le while n'est pas suffisante si c'est bien la fonction partie entière que tu implémente.
tu peux ajuster ton programme de la sorte:
Et attention avec les accollades quand tu utilise des structures de controle (if, boucles,...)
NB: En java il existe la fonction Math.floor(double d) qui te donne la partie entière du nombre qui lui est passé en paramètre
J'ai quelques doutes quant au résultat de ton Algo,
Je pense qu'il rentrera dans une boucle infinie à chaque fois. Ta condition dans le while n'est pas suffisante si c'est bien la fonction partie entière que tu implémente.
tu peux ajuster ton programme de la sorte:
public int entiere(double d) {
int i = 0;
int p = 0;
while ((i < d + 1) && (p + 1 < d)) {
if (d - i > 1) {
i = i + 1;
} else {
p = i;
}
}
return p;
}
Et attention avec les accollades quand tu utilise des structures de controle (if, boucles,...)
NB: En java il existe la fonction Math.floor(double d) qui te donne la partie entière du nombre qui lui est passé en paramètre