Condition else if en C
Fermé
jason-live
Messages postés
178
Date d'inscription
mardi 1 septembre 2009
Statut
Membre
Dernière intervention
26 décembre 2009
-
9 nov. 2009 à 07:02
yaya - 12 oct. 2010 à 13:47
yaya - 12 oct. 2010 à 13:47
A voir également:
- Condition else if en C
- Excel cellule couleur si condition texte - Guide
- Condition et excel - Guide
- Excel soustraction avec condition ✓ - Forum Excel
- Excel copier une cellule si condition ✓ - Forum Excel
- Nbval avec condition ✓ - Forum Excel
6 réponses
coco_83
Messages postés
711
Date d'inscription
mercredi 2 mai 2007
Statut
Membre
Dernière intervention
27 octobre 2011
127
9 nov. 2009 à 07:34
9 nov. 2009 à 07:34
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
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
en
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
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
au lieu d'utiliser tout ces if et else if... pourquoi ne pas utiliser des case vu que c'est des entiers?
genre :
ça simplifie le code, la lecture et la compréhension!
genre :
switch(age) { case (age >=40){ printf(); case(age >=18 && age <40) : printf(); etc...
ça simplifie le code, la lecture et la compréhension!
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
>
Blackdam
9 nov. 2009 à 09:59
9 nov. 2009 à 09:59
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.
}
switch( (age>11) + (age>18) + (age>40) + (age>60))
{
case 0: (moins de 11)
case 1: (moins de 18)
etc.
}
Mr_Hooligan
Messages postés
15
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
20 novembre 2009
9 nov. 2009 à 09:12
9 nov. 2009 à 09:12
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
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
coco_83
Messages postés
711
Date d'inscription
mercredi 2 mai 2007
Statut
Membre
Dernière intervention
27 octobre 2011
127
9 nov. 2009 à 18:09
9 nov. 2009 à 18:09
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!
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
10 nov. 2009 à 08:07
10 nov. 2009 à 08:07
Jamais eu de souci avec les switch.
Je ne voi pas où pourrait être le problème, c'est une instruction comme une autre.
Je ne voi pas où pourrait être le problème, c'est une instruction comme une autre.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
blackdam
Messages postés
327
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
13 février 2015
35
9 nov. 2009 à 19:35
9 nov. 2009 à 19: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...
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"); }
Bonjour
Je suis dans un cas assez similaire!!!!
On m'indique une erreur que je ne comprend pas!!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
int age = 0;
printf("quel age a tu?\n\n");
scanf("%d", &age);
printf("a vous avez %d an\n\n", age);
if (age >= 18)
{
printf("vous ete majeur\n\n");
}
else (age <= 18)
{
printf("a vous ete mineur");
}
return 0;
}
(le code fonctionne qvec un ; apres la ligne else)
merci
Je suis dans un cas assez similaire!!!!
On m'indique une erreur que je ne comprend pas!!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
int age = 0;
printf("quel age a tu?\n\n");
scanf("%d", &age);
printf("a vous avez %d an\n\n", age);
if (age >= 18)
{
printf("vous ete majeur\n\n");
}
else (age <= 18)
{
printf("a vous ete mineur");
}
return 0;
}
(le code fonctionne qvec un ; apres la ligne else)
merci
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
12 oct. 2010 à 12:34
12 oct. 2010 à 12:34
Bonjour,
Il n'y a pas de condition après un else.
Si vous mettez : if (age>=18), vous êtes assuré que si la variable age ne respecte pas cette condition alors les instructions du bloc else seront exécutées (donc dans le cas où age<18).
Cdlt,
Il n'y a pas de condition après un else.
Si vous mettez : if (age>=18), vous êtes assuré que si la variable age ne respecte pas cette condition alors les instructions du bloc else seront exécutées (donc dans le cas où age<18).
Cdlt,
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
12 oct. 2010 à 13:46
12 oct. 2010 à 13:46
Après un if, il y a toujours une condition. En particulier pour "else if".