0

私は実行時に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);

より大きな値を持つ上記の変数を確認する方法。

4

2 に答える 2

2
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. 
于 2012-12-18T09:26:39.177 に答える
0

ウィキペディアで素晴らしい記事を読むことができます: 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..
      }
    }
  }

お役に立てれば。

于 2012-12-18T09:16:45.163 に答える