IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Condition switch assurément mal formulée


Sujet :

JavaScript

  1. #1
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut Condition switch assurément mal formulée
    Salut

    Ma condition switch est assurément mal formulée puisque je n’obtient pas le résultat voulue, mais pour autant, pas d'erreur dans la console.
    Le code pour essais
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <!DOCTYPE html>
    <html>
    <script>
    </script>
    <body>
     
    <h2>JavaScript switch</h2>
     
    <p id="demo"></p>
     
    <script>
                            function DefAzimut(x){
                                    let RetouR;
                                    switch(x){
                                            case (x>=11.25 && x<=33.75): RetouR = "NNE";break;
                                            case (x>=33.75 && x<=56.25): RetouR = "NE";break;
                                            case (x>=56.25 && x<=78.75): RetouR = "ENE";break;
                                            case (x>=78.75 && x<=101.25): RetouR = "E";break;
                                            case (x>=101.25 && x<=123.75): RetouR = "ESE";break;
                                            case (x>=123.75 && x<=146.25): RetouR = "SE";break;
                                            case (x>=146.25 && x<=168.75): RetouR = "SSE";break;
                                            case (x>=168.75 && x<=191.25): RetouR = "S";break;
                                            case (x>=191.25 && x<=213.75): RetouR = "SSW";break;
                                            case (x>=213.75 && x<=236.25): RetouR = "SW";break;
                                            case (x>=236.25 && x<=258.75): RetouR = "WSW";break;
                                            case (x>=258.75 && x<=281.25): RetouR = "W";break;
                                            case (x>=281.25 && x<=303.75): RetouR = "WNW";break;
                                            case (x>=303.75 && x<=326.25): RetouR = "NW";break;
                                            case (x>=326.25 && x<=348.75): RetouR = "NNW";break;
                                            default: RetouR = "N";
                                    }
                                    
                                    return RetouR;
                            }//---------------------------------------------------------
                let Angle = 190;
    document.getElementById("demo").innerHTML = DefAzimut(Angle) + " "+Angle+"°";
    </script>
     
    </body>
    </html>

    Le résultat de la fonction DefAzimut est toujours N alors pour l'angle 190 le retour devrait être S, pour angle de 282.56 ==> WNW ......
    Merci de vos réponses.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    x>=11.25 && x<=33.75 ce type d'expression sera évaluée à true ou false et comparée à la variable x donc ici un nombre. Cele renverra tjs false d'ou le default.
    il faut donc tester quand ces expressions sont à true.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    switch(true){
          case (x>=11.25 && x<=33.75): RetouR = "NNE";break;
          case (x>=33.75 && x<=56.25): RetouR = "NE";break;
    ...

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Merci -Nikopol-

    C'est bon cela fonctionne bien sûr.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Tu peux aussi le calculer en divisant le cercle en 16 sections de 22.5°:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function DefAzimut(angle) {
        const tranches = [
            'N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S',
            'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N'
        ];
     
        return tranches[Math.round(angle/22.5)];
    }
     
    console.log(DefAzimut(348.74));
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    salut CosmoKnacki

    Jolie solution aussi, elle me servira bientôt pour un autre cas.
    Merci
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête mal formulée
    Par BMT_Benoît dans le forum Requêtes
    Réponses: 7
    Dernier message: 12/09/2007, 20h28
  2. pb avec condition (switch)
    Par patou41000 dans le forum C++/CLI
    Réponses: 3
    Dernier message: 30/04/2007, 18h56
  3. Besoin d'aide pour la condition switch
    Par argon dans le forum Langage
    Réponses: 30
    Dernier message: 27/03/2006, 19h18
  4. probleme gestion condition switch - case
    Par DarkMax dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2005, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo