2014-02-08 2 views
-2

Я написал алгоритм, в котором я хочу, чтобы он использовал случайный массив чисел и добавлял первое и последнее числа в этот массив. Пример: мой массив равен [0,5,3,8,2,4,7,9,6,1], и мой алгоритм должен проверить, 1 + 5 = 6 + 0, и поскольку это не так, он должен проверить, 5 + 3 = 9 + 6, то если 3 + 8 = 7 + 9 и т. Д.Как изменить int вне цикла for

Мой первый цикл for - это проверка последних чисел в массиве. Проблема в том, что int totalOfLastValues обновляется только внутри цикла for, поэтому последние значения даже не увеличиваются. Например, в массиве [0,5,3,8,2,4,7,9,6,1], 0 + 5 = 6 + 1 неверно, поэтому он проверяет, 5 + 3 = 6 + 1 вместо проверки 5 + 3 = 9 + 6.

В моей .h

@interface FirstViewController : UIViewController 

@end 
int totalOfLastValues; 
int end; 
int almost; 

В моей .m

-(void) numberAlgorithm { 
    NSMutableArray *arrayOfNumbers = [NSMutableArray array]; 
    for (int x = 0; x < 10; x++) 
    { 
     int randomNumbers = arc4random_uniform(10); 
     [arrayOfNumbers addObject: [NSNumber numberWithInteger: randomNumbers]]; 
    } 
    NSLog(@"%@",arrayOfNumbers); 

    int lastValue = [arrayOfNumbers count]-1; 
    for (int p = lastValue; p > 2; p--) { 
     end = [arrayOfNumbers[0 + p] integerValue]; 
     almost = [arrayOfNumbers[(0-1) + p] integerValue]; 
     totalOfLastValues = end + almost;    
    } 

    int mostRecentValue = [arrayOfNumbers[0] integerValue]; 
    for (int i = 1; i < [arrayOfNumbers count]-2; i++) { 
     int one = mostRecentValue; 
     int two = [arrayOfNumbers[i] integerValue]; 
     mostRecentValue = two; 

     if ((one + two) == totalOfLastValues) { 
      NSLog(@"2: Because %@ + %@ = %@ + %@",arrayOfNumbers[i-1],arrayOfNumbers[i],arrayOfNumbers[(0-1) + lastValue],arrayOfNumbers[0 + lastValue]); 
      break; 
     } else { 
      NSLog(@"-1: Because %@ + %@ != %@ + %@",arrayOfNumbers[i-1],arrayOfNumbers[i],arrayOfNumbers[(0-1) + lastValue],arrayOfNumbers[0 + lastValue]); 
     } 
    } 
} 

Любая помощь будет оценена. благодаря!

ответ

2

Из того, что я понимаю, я думаю, что это может оказаться полезным для вас:

int arrLength = (int)[arrayOfNumbers count]; 
for (int x = 0; x < arrLength/2; x++) { 
    if(x < arrLength-1) { 
     NSLog(@"%i + %i compare %i + %i", [arrayOfNumbers[x] intValue], [arrayOfNumbers[x+1] intValue], [arrayOfNumbers[(arrLength-1) - x] intValue], [arrayOfNumbers[(arrLength-2) - x] intValue]); 
    } 
} 

Выходной сигнал я получаю

2014-02-08 04:36:54.517 Test[54846:70b] (
    3, 
    5, 
    3, 
    6, 
    4, 
    4, 
    6, 
    6, 
    5, 
    6 
) 
2014-02-08 04:36:54.518 Test[54846:70b] 3 + 5 compare 6 + 5 
2014-02-08 04:36:54.519 Test[54846:70b] 5 + 3 compare 5 + 6 
2014-02-08 04:36:54.520 Test[54846:70b] 3 + 6 compare 6 + 6 
2014-02-08 04:36:54.520 Test[54846:70b] 6 + 4 compare 6 + 4 
2014-02-08 04:36:54.521 Test[54846:70b] 4 + 4 compare 4 + 4 
Смежные вопросы