Positif ou negatif ou nul en switch !

dr hisoka Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   -  
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai fait un code source qui teste si le nombre est négative ou positif ou nul mais le prob s'arrte au niveau de compilation voici le code source :

#include <conio.h>
#include <stdio.h>


void main(void)
{
float nbr,b=0;
printf("entrer votre nombre : ");
scanf("%f",&nbr);

switch(nbr)
{
case (nbr<b) :

printf(''negatif'');
break;

case (nbr>b) :

printf("positif");
break;

default :

printf("nul");
}
getch();
}


ou est le prob ??????????? merci d'avance
A voir également:

7 réponses

dr hisoka Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   3
 
aidez moi svppp
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
tu ne peux pas faire de switch avec des ">" ou comme ça.

Tu ne peux faire switch que sur des égalités avec des nombres.

Ici il faut faire plutot avec des if else.
0
dr hisoka Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   3 > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
je sai PACO mais le prof ns demande de la faire avec switch ........ !!!??? quoi je fasse maint ??
0
dr hisoka Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   3
 
aidez moi svppp c urgent j'en ai besoin .... je sai cmm le faire avec if et else mais le prof vx qu'ont le fasse avec switch
0
flokka Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour;tt
je te propose une idéé
esssyer de:
y= nbr*1;
x=nbr+ abs(nbr);
case(y==0)
print("null");
break;

case(x==0)
print(" nbr est negatif");
break;
case (x==2*nbr)
print("positif);
break;

jé oublyer un peu la suntaxe mé j'espere que tu comprend lidéé!!merçi
0
dr hisoka Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   3
 
tres b1 et merci bccppp jusqu'à l'infini lol flokaa j'ai compris ce que tu vx dire je vais le tapé e te revoir avec le résultat ;-)
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
euhhh.... l'idée est à peu près là mais ce qui est proposé est plutot incomplet...

Idée :

1)arrondir le nombre en un entier
2) faire un "modulo" pour se ramener à un petit nombre.
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Non, ça ne peut pas passer la compilation.
En 'C', dans le 'case' on ne peut mettre que des constantes entières qui doivent pouvoir être calculées au moment de la compilation sinon c'est refusé.
Personnellement, je ne vois pas de solution satisfaisante.
Bonne continuation.
0
flokka Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
a votre service ma cherie
sa fé longtemp jé pa programer avec C commem!!!!!!!!!!!!
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
à vrai dire je ne comprends pas ce que tu proposes là :

y= nbr*1;
x=nbr+ abs(nbr);

qu'est ce que ce code est censé faire ?
0

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

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
tu peux utiliser
switch((int)(nbr/fabs(nbr)))
vaut 1 si nbr est > 0, -1 si nbr est < 0 sinon nbr = 0
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Très dangereux si 'nbre' vaut zéro. Il vaudrait mieux faire un test avant.
Bonne continuation.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
oui, mais si il n'y a pas d'erreur le résultat n'est ni 1 ni -1, ça peut suffire pour le default du switch
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Je ne parlais pas du résultat du 'switch' mais de la division par zéro, et ça pose toujours un problème !
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
en virgule flottante non (ça donne -Inf ou +Inf selon si on fait -5.0/0.0 ou 5.0/0.0 par exemple, et NaN (Not a Number) si on fait 0.0/0.0) pour le standard IEEE, et donc pour C++ qui l'utilise. Le -Inf et le +Inf sont bien considérés comme plus petits que 0 et plus grand que 0 respectivement.

Bref, avec les flottants ça ne pose pas d'erreur à l'exécution.
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Effectivement, je n'ai pas fait attention.
Bonne soirée.
0