Puissance de 2 en C

Résolu/Fermé
kimimsc Messages postés 124 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 18 avril 2010 - 29 sept. 2009 à 21:32
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 30 sept. 2009 à 11:29
Bonsoir, je suis entrain de faire les exos sur france ioi voilà la consigne :

Écrivez un programme qui lit un entier et affiche la valeur de la plus grande puissance de 2 qui soit inférieure ou égale à ce nombre.

par exemple je tape 9 le programme dois me renvoyer 8 car 2^3=8

Voilà ce que j'ai fais :

#include <stdio.h>
#include <math.h>

int main()
{
    int N=0,i=0,resultat=0;

    scanf("%d",&N);
    do
    {
        resultat=pow(2,i);
        i++;
    }
    while(resultat>N);
    
if(resultat>N)
    {
        do
        {
            resultat=pow(2,i);
            i--;
        }
        while(resultat<=N);
    }
    printf("%d",resultat); 

    return 0;
}


si je tape 9 j'obtiens 1

C'est quoi mon erreur?
A voir également:

3 réponses

nabil07 Messages postés 140 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 10 avril 2014 64
29 sept. 2009 à 22:08
KONNICHIWA,

c'est normal qu'il t'affiche toujours 1 !!
tu as trompé dans le sens des signes sup & inf.

bon voila la correction :


#include <stdio.h>
#include <math.h>

int main()
{
    int N=0,i=0,resultat=0;

    scanf("%d",&N);
    do
    {
        resultat=pow(2,i);
        i++;
    }
    while(resultat<N);
    
if(resultat>N)
    {
        do
        {
            resultat=pow(2,i);
            i--;
        }
        while(resultat>=N);
    }
    printf("%d",resultat); 

    return 0;
}
2
kimimsc Messages postés 124 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 18 avril 2010 2
29 sept. 2009 à 22:17
o_O
(dire que cela faisait + de 30 min que je cherchais)
comme toujours je fais des erreurs bête
merci
1
Ce n'est pas grave. Tu n'es pas le premier et tu ne seras pas le dernier (j'en fais partie et j'en ferais encore partie).
L'important est d'en tirer une richesse, une souvenance qui te permettras de mieux t'adapter au prochain problème.
Bonne soirée.
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
30 sept. 2009 à 11:29
en effet, de erreurs très grosses, on en fait tout le temps. Et comme tu te dis inconsciemment "c'est pas possible que je me sois gourré là dessus", et ben tu ne trouves pas...
souvent, tu verra qeu c'est en expliquant à quelqu'un ce que fait otn code que tu trouvera toi même ton erreur !

bon courrage
0