massimo (il più alto) e minimo (minimo) valore di tre numeri interi

Ho tre numeri interi

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

Vorrei determinare quale è il più alto e che è il valore più basso utilizzando Objective-C

Non sono sicuro di dove andare … NSArray, int array o qualcos’altro. So che può solo tenere il confronto tra i valori, ma sto cercando una più elegante, e/o un più generale approccio.

Grazie!

  • keep it semplice, basta confrontare.
  • Vorrei, ma il ciclo mostrato qui sotto è molto più semplice di inventare il mio algoritmo penso
InformationsquelleAutor TrekCzar | 2010-12-10

 

3 Replies
  1. 26

    È buona per memorizzare i numeri in un array. Semplicemente matrice C è abbastanza buono e Objective-C per le prestazioni. Per trovare un minimo che si può utilizzare questa funzione. Simile per massimo.

    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;
    }

    Se che è a soli tre numeri che si possono fare confronti manualmente per ottenere le migliori prestazioni. C’è una MIN() e MAX() macro in di Cacao in Fondazione/NSObjCRuntime.h. Per il massimo, basta fare:

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

    Questo può essere adattato a più numeri e può essere più veloce rispetto al primo approccio con loop.

    • grazie. che il ciclo mi ha mostrato il modo per raggiungere il mio obiettivo.
    • MIN() e MAX() sono i tuoi amici.
  2. 0

    Purtroppo non c’è breve ed elegante, né un modo generalizzato per il Cacao.

    Pianura Matrice C + custom loop di essere il migliore. Con un NSArray si dovrebbe avvolgere i numeri Interi in NSNumbers senza ottenere alcun beneficio di che.

    • grazie. una normale matrice c e un custom loop effetti funzionano bene.
    • Non è vero; array può valueForKeyPath di max e min. Non c’è bisogno di scorrere manualmente.
  3. 0

    Objective-C integrato di MAX(a,b) e MIN(a,b) le macro funzionano solo per due valori.

    Ho due macro che ho creato per l’utilizzo di 2 o più valori chiamati multi-max e multi-min (MMAX e MMIN)

    Qui è la loro definizione, basta copiare e incollare nel tuo .h

    #define MMAX(...) ([@[__VA_ARGS__] valueForKeyPath:@"@max.self"])
    #define MMIN(...) ([@[__VA_ARGS__] valueForKeyPath:@"@min.self"])

    Esempio di uso:

    x = MMAX(2,3,9,5);
    //sets x to 9.

Lascia un commento