Search code examples
objective-calgorithm

How to check the greater value in Objective-C?


I am creating a graph. I get 5 values at run time so how should I know which is greater so that I may set max limit?

I have following 5 varibale of values;

int value3=(int)roundf(appDelegate.itemOneValue);
int value4=(int)roundf(appDelegate.itemTwoValue);

int value5=(int)roundf(appDelegate.itemThreeValue);

int value6=(int)roundf(appDelegate.itemFourValue);

int value7=(int)roundf(appDelegate.itemFiveValue);

How to check which of the above variables has the larger value?


Solution

  • NSArray *allValues = @[[NSNumber numberWithInt:(int)roundf(appDelegate.itemOneValue)], 
        [NSNumber numberWithInt:(int)roundf(appDelegate.itemTwoValue)], 
        [NSNumber numberWithInt:(int)roundf(appDelegate.itemThreeValue)], 
        [NSNumber numberWithInt:(int)roundf(appDelegate.itemFourValue)],
        [NSNumber numberWithInt:(int)roundf(appDelegate.itemFiveValue)]];
    
    int max = [[allValues valueForKeyPath:@"@max.intValue"] intValue];
    

    or

    NSNumber * max = [allValues valueForKeyPath:@"@max.intValue"];
    

    An alternative that is less flexible but may be easier to understand:

    int max = (value2 < value1) value2 : value1;
    max = (value3 < max) value3 : max;
    max = (value4 < max) value4 : max;
    max = (value5 < max) value5 : max;
    max = (value6 < max) value6 : max;
    max = (value7 < max) value7 : max; 
    // now max contains the highest of all values.