Что было бы лучшим способом написать цикл, который зацикливается на начальное значение - PullRequest
0 голосов
/ 15 сентября 2018
    int square(int x) {
    int looptime = x;
    int total = 0;
    for (int i=0 ; i < looptime; ++i) {
        total += looptime;
    }
    return total;
}

int main()
{
    for (int i = 0; i < 100; ++i)
        cout << i << '\t' << square(i) << '\n';
}

Я новичок в C ++ и пытаюсь учиться самостоятельно, читая «Принципы и практика программирования». В этой конкретной проблеме я должен сделать функцию "квадрат ()". Подвох в том, что я должен использовать сложение, без умножения.

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

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Что касается того, почему он бесконечно удваивался, трудно не увидеть предыдущий код.Логическим объяснением было бы то, что логическое условие в цикле for было ошибочным, поэтому оно никогда не завершалось, когда ожидалось.

В этой части логика, вероятно, была бы там, где сейчас i

 for (int i=0 ; i < looptime; ++i) {
    total += looptime;

Если это условие всегда выполняется, это объяснит симптом (он останется в цикле, добавляя к нему каждый цикл).Если вы сможете воспроизвести более ранний результат и показать более ранний код, это позволит проверить эту теорию.

0 голосов
/ 15 сентября 2018

Нет необходимости в looptime в функции.

int square(int x) {
   int total = 0;
   for (int i=0 ; i < x; ++i) {
      total += x;
   }
   return total;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...