-1

我有 5 个整数,我正在尝试找出哪一个整数的值最大。我怎样才能做到这一点?

我试过了:

if (louis > harry , matt , bob , jack) {
    name.text = @"Louis";
}

但它不能正常工作。

4

2 回答 2

2

使用数组!将整数放入数组中。如果您甚至不能使用单独的命名int变量,int而是使用数组。

int values[5] = {louis, harry, matt, bob, jack};
NSArray *names = @[@"Louis", @"Harry", @"Matt", @"Bob", @"Jack"];
int highestValue = -INFINITY;
NSString *highestName = nil;
for (int i = 0; i < 5; i++) {
    if (values[i] > highestValue) {
        highestValue = values[i];
        highestName = names[i];
    }
}

您的问题有很多解决方案。以上只是一个通用且非常简单的一个。

它只是将您的整数放入一个数组中,并使用一个循环来找到最大的一个。然后它从另一个字符串数组中获取相应的名称。请注意,该int数组是一个普通的 C 数组,而字符串数组是一个 Objective-C 样式NSArrayNSString对象。

顺便说一句,您的方法不起作用,因为它不是有效的 C 代码。如果您想这样做,请按照我在下面的操作进行。但我真的建议使用数组,因为它更容易阅读维护。

if (louis > harry && louis > matt && louis > bob && louis > jack) {
    name.text = @"Louis";
} else if (harry > louis && harry > matt && harry > bob && harry > jack) {
    name.text = @"Harry";
} ... etc ...
于 2012-11-17T23:50:53.453 回答
1

请注意,我对xcode没有任何经验,我只是在写我能找到的东西

据我所见,无法fmax使用任意数量的参数进行调用,因此您必须遍历变量,如下所示:

switch(fmax(louis,fmax(harry,fmax(matt,fmax(bob,jack)))) {
    case louis: name.text = @"Louis"; break;
    case harry: name.text = @"Harry"; break;
    case matt : name.text = @"Matt";  break;
    case bob  : name.text = @"Bob";   break;
    case jack : name.text = @"Jack";  break;
}
于 2012-11-17T23:49:43.973 回答