Positif ou negatif ou nul en switch !

dr hisoka Messages postés 70 Date d'inscription   Statut Membre -  
loupius Messages postés 789 Statut Membre -
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
Configuration: Windows XP
Safari 532.0

7 réponses

  1. dr hisoka Messages postés 70 Date d'inscription   Statut Membre 3
     
    aidez moi svppp
    0
    1. Pacorabanix Messages postés 4122 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
      1. dr hisoka Messages postés 70 Date d'inscription   Statut Membre 3 > Pacorabanix Messages postés 4122 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
  2. dr hisoka Messages postés 70 Date d'inscription   Statut Membre 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
  3. flokka Messages postés 15 Statut Membre
     
    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
    1. dr hisoka Messages postés 70 Date d'inscription   Statut Membre 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
    2. Pacorabanix Messages postés 4122 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
    3. loupius Messages postés 789 Statut Membre 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
  4. flokka Messages postés 15 Statut Membre
     
    a votre service ma cherie
    sa fé longtemp jé pa programer avec C commem!!!!!!!!!!!!
    0
    1. Pacorabanix Messages postés 4122 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    tu peux utiliser
    switch((int)(nbr/fabs(nbr)))
    vaut 1 si nbr est > 0, -1 si nbr est < 0 sinon nbr = 0
    0
    1. loupius Messages postés 789 Statut Membre 148
       
      Très dangereux si 'nbre' vaut zéro. Il vaudrait mieux faire un test avant.
      Bonne continuation.
      0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
    1. loupius Messages postés 789 Statut Membre 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
  8. Pacorabanix Messages postés 4122 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
    1. loupius Messages postés 789 Statut Membre 148
       
      Effectivement, je n'ai pas fait attention.
      Bonne soirée.
      0