/ / Najlepszy sposób na dzielenie liczb całkowitych w Objective C - target-c, integer

Najlepszy sposób na dzielenie liczb całkowitych w Objective C - target-c, integer

Jeśli mam to:

int toSplit = 208;

Jaki jest najlepszy sposób na podzielenie go, aby uzyskać:

2
0
8

Odpowiedzi:

3 dla odpowiedzi № 1

Metoda byłaby taka

- (NSMutableArray *) toCharArray : (NSString *) str
{

NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[str length]];
for (int i=0; i < [str length]; i++)
{
NSString *ichar  = [NSString stringWithFormat:@"%c", [str characterAtIndex:i]];
[characters addObject:ichar];
}

return characters;
}

2 dla odpowiedzi nr 2
do {
int digit = toSplit % 10;
toSplit /= 10;

printf(@"%i", digit);

} while (toSplit > 0);

Mam nadzieję, że to nie będzie praca domowa.

EDYCJA: jest wstecz, więc nie jest poprawną odpowiedzią ... Pozostawiając ją tutaj, ponieważ może być przydatna dla innych.


0 dla odpowiedzi № 3

Posortuj go na ciąg, a następnie rozsuń. Więc tak:

int toSplit = 208;

NSString *string = [NSString stringWithFormat: @"%i", toSplit];

NSMutableString *splitApartString = [[NSMutableString alloc] init];

for (int i = 0; i < [string length]; i++) {

NSString *substring = [string substringFromIndex: i];

[splitApartString appendFormat: @"%@n", substring];
}

NSLog(@"%@", splitApartString); //YAY!

Więc to, co to robi, wstawia tę int do łańcucha, rozdziela ją, a następnie iteruje przez każdą postać i pobiera ciąg znaków z tej postaci. Następnie dołącza podłańcuch do NOWEGO łańcucha.

Inną alternatywą jest zamiast pobierania podciągu po prostu uzyskać znak i użyć %c operator. Również jeśli spojrzysz na ten kod, zobaczysz ten wynik:

> 2

> 0

> 8

> // extra space here

Możesz po prostu dodać warunek, aby sprawdzić, czy i jest długość ciągu - 1 i nie dodaje spacji lub możesz po prostu usunąć ostatnią literę!


0 dla odpowiedzi nr 4

Nie jestem zaznajomiony ze składnią Objective-C, ale coś takiego:

void split(int toSplit)
{
if (!toSplit)
{
return;
}
split(toSplit / 10);
int digit = toSplit % 10;
printf(@"%i", digit);
}