проблема кредитной линии CS50, чтобы разделить число - PullRequest
0 голосов
/ 23 февраля 2019

У меня была проблема с кредитом CS50.Я пытался найти последнюю цифру номера.Например, 4003600000000014. Это должно быть 4,0,6,0,0,0,0,1.Я смущен этой петлей.Когда я использую числа, например 1,2,...15, чтобы заменить 2i-1, это сработало.Но в этом цикле это не сработало.Это дало мне 6,6,6,6,6,6,6,6 Спасибо за вашу помощь!

`

long answer=get_long("Number: ");
int i;
long a;

for (i=1; i<9 ; i++)
{
    a= fmod((answer / (pow(10,2i-1))),10);
    printf("%ld\n",a)
}   

`

1 Ответ

0 голосов
/ 23 февраля 2019

Выражение 2i-1 не то, что вы думаете.

2i на самом деле является константой комплексного числа.Когда вы затем передаете комплексное значение 2i-1 в pow, мнимая часть усекается, а фактическое переданное значение равно -1.

При умножении двух чисел / переменных вы должны использовать * оператор:

2*i-1
...