【问题标题】:how to check the greater value in iphone application如何在 iphone 应用程序中检查更大的值
【发布时间】:2012-12-05 11:04:45
【问题描述】:

我正在创建图表,我在运行时得到 5 个值,所以我应该如何知道哪个更大,以便我可以设置最大限制 我有以下 5 个变量值;

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

如何检查上述变量的值较大。

【问题讨论】:

    标签: iphone objective-c algorithm ipad


    【解决方案1】:
    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];
    

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

    一种不太灵活但可能更容易理解的替代方法:

    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. 
    

    【讨论】:

    • +1。很好,但恕我直言,这个问题太先进了! :)
    • // max = (value3 > value4) ?值3:值4; // 最大值 = (value5 > value6) ?值5:值6; //max = (max > value7) ?最大值:value7;
    • 我是这样用的好吗
    • 但它显示错误答案我发布的代码你可以看到
    • @HermannKlecker 我已经在你的答案中发布了代码,请看一下
    【解决方案2】:

    你可以在维基百科上阅读一篇很棒的文章:http://en.wikipedia.org/wiki/Selection_algorithm

    这里是从数组中获取最小值/最大值的伪代码:

     function select(list[1..n], k)
         for i from 1 to k
             minIndex = i
             minValue = list[i]
             for j from i+1 to n
                 if list[j] < minValue
                     minIndex = j
                     minValue = list[j]
             swap list[i] and list[minIndex]
         return list[k]
    


    在 objc 中,伪代码变成了这样:

      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);
    
      NSArray *values = @[[NSNumber numberWithInt:value3],
                          [NSNumber numberWithInt:value4],
                          [NSNumber numberWithInt:value5],
                          [NSNumber numberWithInt:value6],
                          [NSNumber numberWithInt:value7]];
      NSNumber min=0;
      NSNumber max=0;
      for ( int i=0; i<[values count]; i++ ) {
        min = [values objectAtIndex:i];
        //etc...
        for (int j=0; j<i+1; j++ ) {
          if ( [values[j] > min] ) {
            // etc..
          }
        }
      }
    

    希望这会有所帮助。

    【讨论】:

    • 你能用objective c用简单的逻辑解释这个算法吗
    • 它在你初始化数组的地方给出错误语法
    • 这是一个例子。在stackoverflow上我无法编译... :)
    猜你喜欢
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    相关资源
    最近更新 更多