Использование многих целых чисел в Objective-C - PullRequest
0 голосов
/ 12 января 2012

Я новичок в программировании, у меня есть немного базового программирования на Python из колледжа, я знаком с некоторыми основами ООП и хотел бы помочь с управлением большим количеством целых чисел. У меня 88 из них. 7 будет использоваться для ввода пользовательского ввода, а остальные 81 будут использоваться для конкретного расчета. Вместо написания следующего кода:

int currentPlace;
int futurePlace;
int speed;
int distance;

int place1 = 1;
int place2 = 2;
int place3 = 3;
// etc...
int place81 = 81;

А потом вернемся к целым числам и задам определенные пользователем вопросы, такие как:

NSLog(@"What place is the runner in?");
scanf("%i", &currentPlace);
NSLog(@"What place does the runner finish in?");
scanf("%i", &futurePlace);
NSLog(@"What is the distance of the track?");

// doing some math

NSLog(@"The runner is running at "i" MPH.",speed);

Я помню, что был более простой способ использовать целые числа, но я продолжаю думать о перечислениях или typedefs.

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

Это мое первое приложение "самостоятельно", поэтому любые полезные указатели были бы хорошими.

Спасибо.

Ответы [ 2 ]

1 голос
/ 12 января 2012

Я не понял, зачем вам все эти place, но я также предполагаю, что массив будет проще использовать здесь.Вы можете использовать либо NSArray, либо NSMutableArray.Разница между ними заключается в том, что экземпляр NSArray нельзя изменить после создания (вы не можете добавлять / удалять элементы) в отличие от NSMutableArray.

с использованием NSArray

NSArray *places = [NSArray arrayWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithInt:2],[NSNumber numberWithInt:3], ..., [NSNumber numberWithInt:81],  nil];

nil в конце означает конец содержимого массива.[NSNumber numberWithInt:1] возвращает значение int, заданное в качестве аргумента (мы не можем дать массиву целое число, так как массив ожидает объект в качестве аргумента.

Вы можете получить доступ к содержимому массива, используя:

[places objectAtIndex:(NSUInteger)];

Помните, что массив начинает считать с 0, поэтому, если вы хотите получить 5, вы должны сделать это

[places objectAtIndex:4];

Используя NSMutableArray

Я предлагаю вам использовать эту опцию.

Здесь проще использовать for.

NSMutableArray *places = [NSMutableArray array];
for (int i = 1; i < 81; i++)
{
    [places addObject:[NSNumber numberWithInt:i]];
}

Тогда вы сможете получить доступ к данным так же, как в NSArray:

[places objectAtIndex:0];

Это вернет 1. Вы можете запустить цикл for с 0. После этого индекс массива будет соответствовать целому числу внутри, так что

[places objectAtIndex:5];

на самом деле вернет 5.

1 голос
/ 12 января 2012

Вы думаете о массиве C?

int myPlaces[81];
for (int i=0; i<81; i++) {
    myPlaces[i] = 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...