2017-10-16 5 views
-1

Je me demandais la manière la plus efficace pour vérifier et voir si un nombre que nous prenons de l'utilisateur est entre deux nombres sinon nous le définirons à une valeur par défaut. Exemple: Si nous voulons les faire faire une estimation aléatoire de trois nombres de 1 à 25, mais s'ils devinent 27 20 10. Ils saisissent une estimation valide sur deux des trois.Fonction pour vérifier le numéro

Je peux faire quelque chose comme:

if(g1 > 25 || g1 <0) { 
    if(g1 >25) g1=25; 
    if(g1 < 0) g1 =0; 
} 

puis tout le groupe plus si des déclarations pour vérifier l'entrée. Je sais que je peux utiliser une fonction pour vérifier cela mais lutter. J'ai réfléchi et je réalise que je peux faire comme si g1> 25 || g2> 25 || g3> 25 alors je peux appeler une fonction et la parcourir. Mais je serais toujours en utilisant le même montant si et si d'autres déclarations donc ce ne serait pas le moyen le plus efficace.

idée proposais

if (g1 >25 || g2> 25 || g3> 25) { 
    guesstobig(g1,g2); 
} 

alors ce serait tout simplement équivalent le même montant dans ma fonction à la place:

int guesstobig(int g1, int g2){ 
    if(g1>25) g1=25; 
    if(g2 >25) g2=25; 
    return g1, g2; 
} 
+1

Pouvez-vous écrire le code vous pensez que c'est un combat? – lilezek

+0

@lilezek, qui a été ajouté. – TylerK

+1

@TylerK _'return g1, g2; '_ Vous savez ce que fait l'opérateur virgule, non? – user0042

Répondre

1
bool isBetween(int upperBound, int lowerBound, int inputNumber) { 
    return !(inputNumber > upperBound || inputNumber < lowerBound); 
} 

Cette fonction retourne vrai si le inputNumber est entre le upperBound et lowerBound compris.

2

Qu'en est-:

int clamp(int i) 
{ 
    if(i<0) 
     return 0; 
    if(i>25) 
     return 25; 
    return i; 
} 

g1 = clamp(g1); 
g2 = clamp(g2); 
g3 = clamp(g3); 

De cette façon, vous vérifiez une fois pour chaque entrée si son en dessous de 0, et, si ce n'est pas, une fois si elle est au-dessus 25.

+0

Pourquoi ne pas rendre cette fonction plus générique en prenant comme paramètres les limites inférieure et supérieure? – user0042

+0

@ user0042 L'OP semble avoir un problème très spécifique et c'est tout ce qui est nécessaire. Je crois qu'ils seront en mesure de créer une version plus générique par eux-mêmes s'ils en ont besoin. – Knoep