2010-12-10 6 views
11

J'ai trois entiersmaximale (le plus élevé) et minimum (le plus bas) la valeur de trois entiers

int myI1 = 33; 
int myI2 = 44; 
int myI3 = 22; 

Je voudrais déterminer quel est le plus élevé et qui est la plus faible valeur en utilisant Objective-C

Je ne suis pas sûr du chemin à suivre ... NSArray, int array ou autre chose. Je sais que je pourrais continuer à comparer les valeurs, mais je cherche une approche plus élégante et/ou plus généralisée.

Merci!

+1

Restez simple, comparez simplement. – khachik

+0

Je voudrais, mais la boucle montrée ci-dessous est beaucoup plus simple que d'inventer mon propre algorithme, je pense – TrekOnTV2017

Répondre

25

Il est bon de stocker ces nombres dans un tableau. Juste un tableau C simple est assez bon et en Objective-C le meilleur pour la performance. Pour trouver un minimum, vous pouvez utiliser cette fonction. Similaire pour le maximum.

int find_min(int numbers[], int N){ 
    int min = numbers[0]; 
    for(int i=1;i<N;i++) 
     if(min>numbers[i])min=numbers[i]; 

    return min; 
} 

Si ce n'est que trois nombres, vous pouvez faire les comparaisons manuellement pour de meilleures performances. Il y a une macro MIN() et MAX() dans Cocoa dans Foundation/NSObjCRuntime.h. Pour le maximum, il suffit de faire:

int m = MAX(myI1, MAX(myI2, myI3)); 

Cela peut être mis à l'échelle à un plus grand nombre et peut-être plus rapide que la première boucle en utilisant l'approche.

+0

merci. cette boucle m'a montré comment accomplir mon objectif. – TrekOnTV2017

+3

MIN() et MAX() sont vos amis. – slycrel

0

Malheureusement il n'y a pas de raccourci et d'élégance ni de manière généralisée pour Cocoa.

Plain C Array + boucle personnalisée serait le meilleur. Avec un NSArray, vous devrez envelopper les entiers dans NSNumbers sans en retirer aucun bénéfice.

+0

merci. Un tableau C simple et une boucle personnalisée fonctionnent vraiment bien. – TrekOnTV2017