Les structures conditionnelles

Fermé
Said - 13 déc. 2019 à 09:18
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 14 déc. 2019 à 16:05
Bonjour, ma question est que est ce qu'on peut utiliser les switch pour comparer deux nombres sans demander à l'utilisateur de choisir un opérateur




Configuration: Android / Chrome 78.0.3904.108

2 réponses

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
13 déc. 2019 à 10:52
Salut Said,

est ce qu'on peut utiliser les switch pour comparer deux nombres

https://en.cppreference.com/w/c/language/switch

Comme
switch
permet de comparer une expression dont l'évaluation est un type entier à des constantes entières, rien ne t'empêche de :
  • mettre dans le
    switch
    une comparaison
  • laquelle sera évaluée à faux, c'est à dire
    0
    en C, ou vrai (toute autre valeur que
    0
    )
  • et à comparer le résultat de cette évaluation à la constante
    0
    avec un
    case
    pour traiter le cas où l'expression est fausse
  • et à traiter le cas où l'expression est vraie avec un
    default


C'est donc possible, mais très tordu, et j'ai du mal à m'imaginer pourquoi un programmeur C ferait cela au lieu d'utiliser un
if then else
.

sans demander à l'utilisateur de choisir un opérateur

L'opérateur de comparaison sera dans le code, que ce soit un
switch
ou un
if then else
... je ne comprends pas cette partie de ta question.

Dal
1
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
13 déc. 2019 à 18:14
J'ajouterai que j'ai répondu à ta question de façon littérale sur les parties compréhensibles, mais que, intuitivement, je pense que tu as mal posé ta question et que tu demandais autre chose que tu n'as pas su exprimer clairement avec tes 2 lignes et qu'il nous est difficile de deviner.

Si c'est le cas, je t'invite fortement à préciser ta question, si tu veux espérer avoir une réponse utile :-)
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
14 déc. 2019 à 16:05
Bonjour,

"peut-être" que la question est : peut-on séparer les 3 cas de comparaisons de deux données (strictement inférieur, égal, strictement supérieur) en utilisant un switch ?

Il faut utiliser 2 tests biens combinés dans le switch.
switch ( (a==b) + (a<=b) ) {
    case 0: // aucun test vrai
        printf( "a est strictement supérieur à b\n");
    break;
    case 2: // les 2 tests vrais donc forcément a==b
        printf( "a est égal à b\n");
    break;
    default: // un seul test vrai, forcément a<=b ET a!=b
        printf( "a est strictement inférieur à b\n");
    break;
}
0