У меня есть этот массив, который имеет пять случайных чисел между 9:59:Добавление объектов алгоритма в Objective-C
NSMutableArray *arrayOfNumbers = [NSMutableArray array];
for (int x = 0; x < 5; x++)
{
[arrayOfNumbers addObject: [NSNumber numberWithInt: arc4random()%10]];
}
NSLog(@"%@",arrayOfNumbers);
Я хочу взять первые два и последние два объекта и добавить их вместе. Если они добавляют друг к другу, я хочу вернуть 2. Если они не добавляются вместе, я хочу проверить, чтобы второй и третий объекты добавляли последние два объекта. Так что в основном, если у меня есть массив [2,3,9,4,1], то я хочу проверить, есть ли 2 + 3 = 4 + 1. В этом случае да, поэтому я бы вернул 2. В этом массиве [2,3,6,4,5] 2 + 3! = 4 + 5, поэтому мы перейдем на проверку, если 3 + 6 = 4 + 5, а с мы возвращаем 2. Теперь, если нет двух объектов, которые при объединении могут быть равны [0,1,2,3,4], тогда мы будем возвращать -1.
Это то, что я сделал до сих пор:
int lastValue = [arrayOfNumbers count];
int secondlastValue = [arrayOfNumbers count] - 1;
int firstValue = 0;
int secondValue = 1;
int i;
for (i = 0; i < [arrayOfNumbers count]; i++) {
int one = [[arrayOfNumbers objectAtIndex:firstValue + i] integerValue];
int two = [[arrayOfNumbers objectAtIndex:secondValue + i] integerValue];
int secondtolast = [[arrayOfNumbers objectAtIndex:secondlastValue] integerValue];
int last = [[arrayOfNumbers objectAtIndex:lastValue] integerValue];
if (one + two == secondtolast + last) {
NSLog(@"2: Because %i + %i = %i + %i",firstValue,secondValue,secondlastValue,lastValue);
break;
} else {
NSLog(@"-1");
}
}
Но по какой-то причине, он выходит из строя ... Любая помощь будет оценена. благодаря!
EDIT: это ошибка *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 5 beyond bounds [0 .. 4]'
EDIT 2: Это мой NSLog-х
if ((one + two) == totalOfLastValues) {
NSLog(@"2: Because %@ + %@ (%i) = %@ + %@",arrayOfNumbers[i],arrayOfNumbers[i+1],one+two,[arrayOfNumbers objectAtIndex:[arrayOfNumbers count] - 2],[arrayOfNumbers lastObject]);
break;
} else {
NSLog(@"-1: Because %@ + %@ (%i) != %@ + %@",arrayOfNumbers[i],arrayOfNumbers[i+1],one+two,[arrayOfNumbers objectAtIndex:[arrayOfNumbers count] - 2],[arrayOfNumbers lastObject]);
}
Ваш код выглядит он создает индекс за пределами исключения границ. Почему вы перебираете массив и добавляете i в firstvalue и secondvalue? Вы должны установить точку останова и выполнить свой код, чтобы понять, как он себя ведет. – bneely