Discussion: si, sinon si, etc !

  1. #1
    Invité
    Invité(e)

    Par défaut si, sinon si, etc !

    Je code un programme qui me saute des passage des mes if else if, soit il va directement à la fin soit il me donne le résultat d'un seule valeur sans de demander la deuxième valeur...
    Code : 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
    #include<stdio.h>
    int main (){
    int val1;
    int val2;
    printf("entrer une valeur1\n");
    scanf("%d", &val1);
     
    if((val1 < 5)){
        printf("%d : ma valeur est petite\n");
    }else if((val1 >5)){
        printf("%d : ma valeur est grande\n");
     
    printf("entrer une valeur2\n");
    scanf("%d", &val2);
     
    }else if((val2 < 5)){
        printf("%d : ma valeur est petite\n");
    }else{((val2 >5));
        printf("%d : ma valeur est grande\n");
    }
    return 0;
    }

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    septembre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : septembre 2008
    Messages : 426
    Points : 1 256
    Points
    1 256

    Par défaut

    Bonsoir

    Ton code ne correspond pas à l'indentation. Ne pas oublier que le compilo ne considère pas l'indentation, c'est juste pour faciliter la lecture du code par l'humain. Alors quand cela ne correspond pas, on a vite mal lu le programme.

    Ton code l'indentation qui correspond:
    Code : 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
    #include<stdio.h>
    int main (){
    int val1;
    int val2;
    printf("entrer une valeur1\n");
    scanf("%d", &val1);
     
    if((val1 < 5)){
        printf("%d : ma valeur est petite\n");
    }else if((val1 >5)){
        printf("%d : ma valeur est grande\n");
     
        printf("entrer une valeur2\n");
        scanf("%d", &val2);
     
    }else if((val2 < 5)){
        printf("%d : ma valeur est petite\n");
    }else{((val2 >5));
        printf("%d : ma valeur est grande\n");
    }
    return 0;
    }
    Maintenant le code qui correspond à l'indentation originale:
    Code : 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
    #include<stdio.h>
    int main (){
    int val1;
    int val2;
    printf("entrer une valeur1\n");
    scanf("%d", &val1);
     
    if((val1 < 5)){
        printf("%d : ma valeur est petite\n");
    }else if((val1 >5)){
        printf("%d : ma valeur est grande\n");
    }
    printf("entrer une valeur2\n");
    scanf("%d", &val2);
     
    if((val2 < 5)){
        printf("%d : ma valeur est petite\n");
    }else{((val2 >5));
        printf("%d : ma valeur est grande\n");
    }
    return 0;
    }
    Et éventuellement ce que tu souhaites si ma boule de cristal n'est pas trop cassée, avec un code et une indentation légèrement différents
    Code : 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
    #include<stdio.h>
    int main (){
    int val1;
    int val2;
    printf("entrer une valeur1\n");
    scanf("%d", &val1);
     
    if((val1 < 5)){
        printf("%d : ma valeur est petite\n");
    }else if((val1 >5)){
        printf("%d : ma valeur est grande\n");
     
        printf("entrer une valeur2\n");
        scanf("%d", &val2);
     
        if((val2 < 5)){
            printf("%d : ma valeur est petite\n");
        }else{((val2 >5));
            printf("%d : ma valeur est grande\n");
        }
    }
    return 0;
    }
    Je te laisse chercher et méditer sur les différences entre ces trois codes.

    Delias

  3. #3
    Invité
    Invité(e)

    Par défaut

    c'est à dire que je dois toujours respecter ceci; if, else if, else if...else pour la fin ?

    Merci

  4. #4
    Invité
    Invité(e)

    Par défaut

    ou alors si ce n'est pas le cas faire attention aux accolades, comme dans mon exercice que tu as résolu..

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    4 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 4 932
    Points : 16 342
    Points
    16 342

    Par défaut

    il n'y a pas de "else if"
    Il y a else, et if.

    la structure conditionnelle est: if ( condition ) une-seule-instruction ou if ( condition ) une-seule-instruction else une-seule-instruction.
    Dans les deux cas, condition est une expression booléenne.

    Les accolades permettent d'utiliser un bloc d'instructions comme si c'était une seule.

    quand tu écris if (bidule) {...} else if (bidule2) {} else if (bidule3)..., chaque if est utilisé comme instruction d'un else.

    L'indentation normale serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (bidule) {
        ...
    }
    else
        if (bidule 2) {
            ...
        }
        else
            if (bidule3)
                ....
    Et avec toutes les accolades
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (bidule) {
        ...
    }
    else {
        if (bidule 2) {
            ...
        }
        else {
            if (bidule3) {
                ....
            }
        }
    }
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Invité
    Invité(e)

    Par défaut

    Merci

    Ternel je t'aime tellement t'es sérieuse
    Dernière modification par LittleWhite ; 22/08/2017 à 19h38.

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

Discussions similaires

  1. [WD18] problème avec si sinon etc
    Par phoenix916916 dans le forum WinDev
    Réponses: 3
    Dernier message: 02/04/2015, 23h01
  2. comment écrire au mieux SI /SINON/SINON SI etc
    Par chapeau_melon dans le forum WinDev
    Réponses: 8
    Dernier message: 22/11/2007, 20h14
  3. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  4. [Choix] SGDB pour Entreprise : coût, efficacité, etc.
    Par grassat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 15/06/2002, 08h52

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