Rechercher : dans
Par :

Condition else if en C

Dernière réponse le 10 nov 2009 à 08:07:17 jason-live, le 9 nov 2009 à 07:02:23 
 Signaler ce message aux modérateurs

Bonjour, voici mon code :

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int age =0;
    printf("Tapez votre age vous verifier si vous ete majeur!\n");
    scanf ("%d", &age);
    if (age >= 18)
    {
        printf ("Vous ete majeur\n");
    }
    else if (age<18 && age>=11)
    {
        printf ("Vous ete en periode d'adolescence \n");
    }
    else if (age >= 40)
    {
        printf ("Vous commencez a etre vieux !\n");
    }
    else if (age<=10 && age>=3)
    {
        printf ("Vous n etes qu'un enfant ! \n");
    }

    return 0;
}

Quand j'entre le nombre 40 ou + il y a marqué vous êtes majeur or ce n'est pas ce que j'ai demandé dans mon programme :(
Pouvez-vous m'aidez svp merci :D
Configuration: Windows Vista
Firefox 3.5.5

Meilleures réponses pour « condition else if en C » dans :
Langage C++ - Les structures conditionnelles Voir Qu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...
Langage C - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...
Javascript - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non, ce qui permet notamment de donner de l'interactivité à vos scripts. L'instruction...
Perl - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...

1

coco_83, le 9 nov 2009 à 07:34:15
  • +1

Salut
Imaginons que tu aies un groupe de personnes toutes tranches d'âge confondues. Tu vas d'abord demander à tous ceux d'au moins 18 ans de se placer dans une pièce d'où ils ne peuvent sortir. Tu feras la même chose avec ceux entre 11 et 18 dans une autre pièce et ceux entre 3 et 10 dans une troisième pièce. Quand tu appelleras ceux qui ont 40 ans, il n'y aura plus personne car ils seront déjà avec ceux de plus de 18! Il faut donc commencer par appeler ceux qui ont entre 18 et 40 ans non compris, et là les séniors attendront d'être appelés.
=> Si tu entres 40, 40>=18 donc il va exécuter la première condition

printf ("Vous ete majeur\n");

Et il va sauter toutes les autres commencées par else. Pour les plus vieux que 40 ans, il faut que tu modifies ta première condition de
if(age>=18)

en
if(age>=18 && age <40)

pour que si tu rentres 40, il ne prenne pas le 1er bout de code printf("Vous êtes majeur") mais celui réservé aux seniors.
Voilà, en espérant t'avoir aidé
coco_83

Répondre à coco_83

2

Mr_Hooligan, le 9 nov 2009 à 09:12:15

Bonjour,

Pourquoi imbrique tu tes IF ?

Si tu fais des tests successif sans les imbriquer, sa devrait fonctionner peu importe par quelle tranche d'age tu commence.

Si tu souhaite absolument imbriquer, la solution de coco_83 me paraît bien.

Mr_Hooligan

Répondre à Mr_Hooligan

3

Blackdam, le 9 nov 2009 à 09:32:53
  • +1

Au lieu d'utiliser tout ces if et else if... pourquoi ne pas utiliser des case vu que c'est des entiers?
genre :

switch(age) {
    case (age >=40){
            printf();
    case(age >=18 && age <40) :  
             printf();
    etc...

ça simplifie le code, la lecture et la compréhension!

Répondre à Blackdam

4

Blackdam, le 9 nov 2009 à 09:35:05
  • +1

Edit : je dis peut etre une bétise, je ne me souviens plus si on a le droit de faire comme ça avec des case... :p faut vraiment que je me remette à la prog moi!!

Répondre à Blackdam

5

Char Snipeur, le 9 nov 2009 à 09:59:32

En effet c'est une bêtise. Les case doivent être des entier constants, comme pour les tableaux. Si tu veux vraiment utiliser switch :
switch( (age>11) + (age>18) + (age>40) + (age>60))
{
case 0: (moins de 11)
case 1: (moins de 18)
etc.
} Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur

6

coco_83, le 9 nov 2009 à 18:09:06

Moi j'évite les switch dans ce genre de cas là, les switch je les réserve aux messages passés dans mon applicaiton (avec les headers). Car on ne sait jamais à quel résultat s'attendre et quand on oublie de mettre default, ben ca foire!

Répondre à coco_83

8

 Char Snipeur, le 10 nov 2009 à 08:07:17

Jamais eu de souci avec les switch.
Je ne voi pas où pourrait être le problème, c'est une instruction comme une autre. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

7

blackdam, le 9 nov 2009 à 19:35:35

En fait ce qui me gène c'est plutôt tout ces "else if" ... :p je trouve que ça alourdit le code!
dans ce cas, faire plutôt que des if...

if (age >= 40)
    {
        printf ("Vous commencez a etre vieux !\n");
    }
if (age >= 18 && age <40)
    {
        printf ("Vous ete majeur\n");
    }
if (age<18 && age>=11)
    {
        printf ("Vous ete en periode d'adolescence \n");
    }
 if (age<11 && age>=3)
    {
        printf ("Vous n etes qu'un enfant ! \n");
    }

Plus t'avance moins vite, moins t'avance plus vite

Répondre à blackdam