2010-12-10 22 views
11

tengo tres enterosmáximo (más alto) y el mínimo valor (más bajo) de tres enteros

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

me gustaría determinar cuál es el más alto y que es el valor más bajo usando Objective-C

No estoy seguro de qué camino tomar ... NSArray, int array u otra cosa. Sé que podría seguir comparando los valores, pero estoy buscando un enfoque más elegante y/o más general.

¡Gracias!

+1

manténlo simple, solo compáralo. – khachik

+0

Lo haría, pero el ciclo que se muestra a continuación es mucho más simple que inventar mi propio algoritmo Creo que – TrekOnTV2017

Respuesta

25

Es bueno almacenar esos números en una matriz. Simplemente la matriz C es lo suficientemente buena y en Objective-C la mejor para el rendimiento. Para encontrar un mínimo, puede usar esta función. Similar para máximo.

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 solo son tres números, puede hacer las comparaciones manualmente para obtener el mejor rendimiento. Hay una macro MIN() y MAX() en Cocoa in Foundation/NSObjCRuntime.h. Para el máximo, acaba de hacer:

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

Esto puede hacerse a escala más números y puede ser más rápido que el primer enfoque mediante bucle.

+0

gracias. ese bucle me mostró cómo lograr mi objetivo. – TrekOnTV2017

+3

MIN() y MAX() son tus amigos. – slycrel

0

Desafortunadamente, no es corto ni elegante ni una forma generalizada para eso en Cocoa.

Plain C Array + loop personalizado sería el mejor. Con un NSArray tendrías que envolver los números enteros en NSNumbers sin obtener ningún beneficio de eso.

+0

gracias. una matriz c simple y un bucle personalizado funcionan bien. – TrekOnTV2017

Cuestiones relacionadas