Как суммировать все числа, используя l oop? - PullRequest
0 голосов
/ 27 мая 2020

Например, у меня есть число 1 + 6 + 7 + 12 + 13 + 18 + ..... + n (n - ввод от пользователей, который представляет количество элементов), индекс этого числа начинается с 1 это означает, что если индекс является нечетным числом (1,3,5 ...), я хочу увеличить элемент в этом индексе на 5, и если индекс является четным числом, я хочу увеличить элемент в этом индексируйте на 1, пока я не достигну из n элементов. Я хочу просуммировать все эти числа. Извините, это может быть трудно понять из-за моего плохого английского sh, поэтому позвольте мне написать здесь часть моего C кода:

using namespace std;

  int i, n, result = 0;

  cout << "Input number to sum: ";
  cin >> n;

  // Finding result
  for (i = 0; i <= n; i++){
    if (i % 2 == 0) {
      result +=i;
    } else {
      result += i * 5;
    }
  }

  // Make last number have equal sign "1+6+7+12 = 36"
  for (i = 0; i <= n; i++){
    if (i == n) {
      cout << i..?? << "=";
    } else {
      cout << i..?? << "+";
    }
  }

  // Print result out
  cout << result;
  return 0;
}

Ответы [ 3 ]

0 голосов
/ 27 мая 2020

Я согласен с molbdnilo , что объединение вычислений и вывода в этом случае упрощает код.

Я не согласен с алгоритмом, однако, учитывая описание OP.

Далее вычисления повторяются для вывода результата

#include <iostream>

int main()
{
    int n; 
    std::cout << "Input number to sum: ";
    std::cin >> n;

    auto update = [] (int i) { return i % 2 == 0 ? 1 : 5; };

    int result = 0;
    int value = 0;
    for (int i = 0; i < n; i++)
    {
        value += update(i);
        result += value;
    }

    std::cout << '\n';
    for (int i = 0, value = 0; i < n; i++)
    {
        value += update(i);
        std::cout << (i > 0 ? " + " : "") << value;
    }
    std::cout << " = " << result;
}

Testable здесь .

0 голосов
/ 27 мая 2020

Я согласен с ответом molbdnilo . Однако в алгоритм некоторые изменения.

  1. Индекс начинается с 1, поэтому проверка значения i in для l oop должна быть

    for (int i = 0; i

  2. при обновлении значений приращение должно выполняться на значении, а не на i.

Вот мое решение :

using namespace std;

int main()
{
    int i, n, result, value = 0;
    cout << "Input number to sum: ";
    cin >> n;

    for (i = 0; i < n; i++)
    {
        value = i % 2 == 0 ? value + 1 : value + 5;
        cout << (i > 0 ? " + " : "") << value;
        result += value;
    }
    cout << " = " << result;

    return 0;
}

Тестируемый здесь

0 голосов
/ 27 мая 2020

Объедините вычисление с выводом (я обычно проповедую обратное, но в данном случае это фактически упрощает дело).

for (int i = 0; i <= n; i++)
{
    int value = i % 2 == 0 ? i + 1 : i + 5;
    cout << (i > 0 ? " + " : "") << value;
    result += value;
}
cout << " = " << result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...