Добавление чисел в массиве с заданным условием - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть числа в массиве, нечетные и четные, я должен добавить нечетные друг с другом, а четные с другим.Я очень озадачен тем, как это сделать из-за указанных параметров и условий:

В моем файле Adder.h у меня есть следующее:

@interface ConditionalAdder : NSObject

- (instancetype)initWithNumbers:(NSArray *)numbers;

- (int)sumWithCondition:(NSString *)condition;

@end

В моем Main.mфайл У меня есть следующий код:

#import "ConditionalAdder.h"

int main(int argc, const char * argv[]) {
  @autoreleasepool {

ConditionalAdder *adder1 = [[ConditionalAdder alloc] 
initWithNumbers:@[@1, @2, @3, @4, @5]];
NSLog(@"%i", [adder1 sumWithCondition:@"even"]);
NSLog(@"%i", [adder1 sumWithCondition:@"odd"]);

ConditionalAdder *adder2 = [[ConditionalAdder alloc] 
initWithNumbers:@[@13, @88, @12, @44, @99]];
NSLog(@"%i", [adder2 sumWithCondition:@"even"]);

ConditionalAdder *adder3 = [[ConditionalAdder alloc] 
initWithNumbers:@[]];
NSLog(@"%i", [adder3 sumWithCondition:@"odd"]);
  } 

return 0;
}

Я знаю, что этот метод:

- (int)sumWithCondition:(NSString *)condition;

Должен возвращать целое число, но какую строку я должен пройти через параметр?

1 Ответ

0 голосов
/ 30 декабря 2018

Вы не показали свою функцию sumWithCondition.Но вы можете использовать операцию mod, которая %.Mod вернет 0, если первое число полностью делится на второе число.

Это должно работать (при условии, что ваш числовой массив называется numbers)

NSArray *numbers;

- (int)sumWithCondition:(NSString *)condition {

    int sum = 0;
    int modCondition = 0;

    if ([condition isEqualToString:@"odd"]) {
        modCondition = 1; //Set Mod condition to odd
    }
    else {
        modCondition = 0; //Set Mod condition to even
    }

    for (int i = 0; i < [numbers count]; i++){ //Iterate over each value in array
        int thisValue = [[numbers objectAtIndex:i] intValue];

        if ((thisValue % 2) == modCondition) { //If value is odd or even depending on condition
            sum += thisValue; //Then add value to sum
        }

    }

    return sum;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...