Получение значения наиболее значимой цифры в Задаче C - PullRequest
5 голосов
/ 30 марта 2012

У меня в настоящее время есть код в цели C, который может извлечь наиболее значимое целое число. Мой единственный вопрос: есть ли лучший способ сделать это, чем то, что я привел ниже. Это делает работу, но это похоже на дешевый хак.

Что делает код, так это то, что он принимает переданное число и проходит по нему до тех пор, пока это число не будет успешно разделено на определенное значение. Я делаю это для образовательного приложения, которое делит число на его значения и показывает все значения, сложенные вместе для получения окончательного результата (1234 = 1000 + 200 + 30 + 4).

int test = 1;
int result = 0;
int value = 0;

do {
    value = input / test;
    result = test;
    test = [[NSString stringWithFormat:@"%d0",test] intValue];
} while (value >= 10);

Любой совет всегда ценится.

1 Ответ

8 голосов
/ 30 марта 2012

Это сработает?

int sigDigit(int input)
{
    int digits =  (int) log10(input);
    return input / pow(10, digits);
}

В основном это делает следующее:

  1. Находит количество цифр на входе (log10(input)) и сохраняет его в «цифрах».
  2. делит input на 10 ^ digits.

Теперь у вас должно быть самое значительное число в цифрах.

РЕДАКТИРОВАТЬ: если вам нужна функция, которая получает целое значение по определенному индексу, проверьте эту функцию:

int digitAtIndex(int input, int index)
{
    int trimmedLower = input / (pow(10, index)); // trim the lower half of the input

    int trimmedUpper = trimmedLower % 10; // trim the upper half of the input
    return trimmedUpper;
}
...