Problème de programation C

Fermé
Paul_Le_Brave Messages postés 63 Date d'inscription vendredi 11 janvier 2008 Statut Membre Dernière intervention 23 mai 2012 - 10 avril 2009 à 17:34
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 10 avril 2009 à 19:03
Bonjour, j'ai un petit problème en C, j'ai taper un code dont il y a un extrait tout en bas.
Et il me signal un erreur avant les deux premier "else if" mais je ne la trouve pas aidez-moi s'il vous plait !!!


if(niveau == 1)
const int MAX = 10, MIN = 1;//choix du niveau1
else if(niveau == 2)
const int MAX = 100, MIN = 1;//choix du niveau2
else if(niveau == 3)
const int MAX = 1000, MIN = 1;//choix du niveau3
else if(niveau == 4)
const int MAX = 10000, MIN = 1;//choix du niveau4
else if(niveau == 5)
const int MAX = 100000, MIN = 1;//choix du niveau5
else if(niveau == 6)
const int MAX = 1000000, MIN = 1;//choix du niveau6
else if(niveau == 7)
const int MAX = 10000000, MIN = 1;//choix du niveau7
else if(niveau == 8)
const int MAX = 100000000, MIN = 1;//choix du niveau8
else if(niveau == 9)
const int MAX = 1000000000, MIN = 1;//choix du niveau9
else
const int MAX = 10000000000, MIN = 1;//choix du niveau10

5 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
10 avril 2009 à 17:40
Tu définis plusieurs fois ta variable. D'où le problème.
int max,min;
switch(niveau) {
   case 1:
       max=10;
       min=1;
       break;
   case 2:
     etc...
}

Ou alors, tu peux constater que max=10 puissance niveau et min vaut toujours 1.
Donc, une simple petite boucle for (ou pow). Et en plus tu pourras avoir une constante.
Ou alors tu peux utiliser un tableau des valeurs de max s'il n'existe pas de relation entre le niveau et la valeur de max.
0
Profil bloqué
10 avril 2009 à 17:40
Déja,je te conseille de faire virer ton bloc imbriqué de if et else en un bloc switch ,cela
évitera ces genres d'erreurs.
0
Paul_Le_Brave Messages postés 63 Date d'inscription vendredi 11 janvier 2008 Statut Membre Dernière intervention 23 mai 2012 4
10 avril 2009 à 18:04
Ok mais comment tu le ferai toi la boucle for ???
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
10 avril 2009 à 18:36
Voici un exemple de programme :
#include <stdio.h>

static int puissance(const int base, int exp) {
    int res=1;
    while(exp--) res*=base;
    return res;
}

static int val_max(const int niveau) {
    return puissance(10,niveau<9?niveau:9);
}

int main(void) {
    const int min=1;
    const int max=val_max(5);

    printf("min=%d, max=%d\n",min,max);
    return 0;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Paul_Le_Brave Messages postés 63 Date d'inscription vendredi 11 janvier 2008 Statut Membre Dernière intervention 23 mai 2012 4
10 avril 2009 à 18:55
ok merci je test !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
10 avril 2009 à 19:03
D'ailleurs, dans mon exemple je me suis arrêté au niveau 9 au lieu 10 comme t'as fait. Donc le nombre maximum sera 10 puissance 9 dans mon exemple. Pour que ce soit 10 puissance 10 il faudra utiliser le type long long int. Et la fonction renverrait : return puissance(10,niveau<10?niveau:10);

Cdlt
0