Неверная сумма - для цикла в C - PullRequest
0 голосов
/ 12 сентября 2011

Я пытаюсь суммировать значения в цикле for с C. Начальное значение переменной x = 1, и я хочу удвоить его установленное число раз и добавить результат.Я сделал цикл for, но моя сумма всегда отключена на начальное значение.

Например, если x = 1, шаблон должен идти:

1, 2, 4, 8, 16

... иtotal должно быть 31.К сожалению, total отключен на единицу.

int x = 1;
int y = 10;
int total;

for(int i = 1; i < y; i++)
{   
   x *= 2;
   total += x;
}

printf("Total: %d\n", total);

Это отключен на единицу.Как я могу начать цикл с 1 вместо 2?

Ответы [ 2 ]

2 голосов
/ 12 сентября 2011

Переключение двух операторов в теле цикла for. Также рекомендуется инициализировать итоговое значение 0, если вы хотите переместить все это в функцию.

0 голосов
/ 12 сентября 2011

Как обычно в случае с ошибочным кодом, существует более одного способа его «исправить».Хотя вы достаточно ясно дали понять, что что вы пытаетесь реализовать, никто не знает, как вы пытаетесь это реализовать.

  • Как уже заметил @Ray Toal в своем ответе, правильный результат можно получить, инициализируя total до 0 до цикла и выполняя x *= 2 после сложение внутри цикла.

  • В качестве альтернативы можно сказать, что цикл в порядке, как и в исходном коде.Вам просто нужно инициализировать от total до 1 перед циклом.

Какой подход ближе к тому, что вы пытались реализовать изначально - только вы знаете.В обоих случаях убедитесь, что вы сделали правильное количество итераций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...