По модулю, чтобы получить одно целое из длинного - PullRequest
0 голосов
/ 18 июня 2020

C языковой вопрос. Моя задача занять второе место после последнего, третье до последнего di git et c. из долгого. Получил подсказку, как это сделать, используя оператор по модулю:

int main(void)
{
    a = get_long("n:\n");

    mod = a % 10;

    printf("%i", mod);
}

Отлично работает для самого правого di git, но я просто не могу понять, как получить второе, третье и последнее di git и так далее. Я пытаюсь поместить функцию в l oop, но она вообще не работает. У вас есть идеи, как принять sh это?

Я не ищу готового решения - просто для того, чтобы идти по пути.

1 Ответ

1 голос
/ 18 июня 2020

Вы начали правильно, первая итерация даст вам крайнее правое значение di git. После этого вам нужно уменьшить исходное число таким образом, чтобы предпоследнее число стало последним.

Решение: разделите на 10. Каждый раз, когда вы делите число на 10 (целочисленное деление), крайний правый di git исчезает , а предпоследний di git становится последним di git. Таким образом, вы можете продолжать использовать тот же логин с модулем для получения нового последнего di git.

Что-то вроде

int main(void)
{
    int a = get_long("n:\n"); //why no datatype?

    int mod = -1;

    for (; a > 0; a/=10){  // check if a> 0, perform the modulo, and then divide by 10
        mod = a % 10;
        printf("%i\n", mod);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...