我的C++级数计算程序出了什么问题?被困了好几个星期
Whats wrong with my program on how to calculate the series C++? Been stuck for weeks
#include <iostream>
using namespace std;
int main () {
int input {};
int sum {0};
int tsum {0};
cout << "Number: ";
cin >> input;
for (int i {1}; i <= input; i++) {
for (int j {1}; j <= input; j++) {
sum += j;
tsum += j;
cout << j;
if (j < i) {
cout << "+";
}
}
cout << " = " << tsum << endl;
}
cout << "Your sum is: " << sum << endl;
}
所以我在w3resources的循环练习中发现了这个问题,它希望我计算这个系列,例如:假设我的输入是2
它将被输出1=1
1+2=3
该系列的总和为4
我已经研究这个问题一个星期了,但我无法理解它,我甚至看了解决方案,但仍然不明白。有人能试着向我解释一下吗,因为这很令人沮丧。我确实理解我们需要一个嵌套循环来将两个数字相加,但如何求和+=j;并且tsum+=j适合这个方程?它不是只是1+1=2,1+2=3,然后2+1=3,2+2=4吗?那该如何让我找到解决方案?????以及你如何将"="与"+"结合起来?sum和tsum怎么不会是同一个数字,因为它们都在把j加到它的值上?
首先,您没有正确输入建议的解决方案代码。它呈现在这里。看看它与你发布的内容有何不同(我已经用// *** HERE ***
:标记
#include <iostream>
using namespace std;
int main()
{
int i, j, n, sum = 0, tsum;
cout << "nn Find the sum of the series (1) + (1+2) + (1+2+3) + (1+2+3+4) + ... + (1+2+3+4+...+n):n";
cout << "------------------------------------------------------------------------------------------n";
cout << " Input the value for nth term: ";
cin >> n;
for (i = 1; i <= n; i++)
{
tsum = 0;
for (j = 1; j <= i; j++) //*** HERE ***
{
sum += j;
tsum += j;
cout << j;
if (j < i)
{
cout << "+";
}
}
cout << " = " << tsum << endl;
}
cout << " The sum of the above series is: " << sum << endl;
}
解决这个问题,锻炼更有意义。也就是说,你练习的目标是计算一个总和。给定一些自然数n
,算法简单地为:
sum = 0;
for (i = 1 through n)
for (j = 1 through i)
sum = sum + j;
假设输入的数字是3。这意味着你正在计算
(1) + (1+2) + (1+2+3)
备选方案#1:重新分组
请注意,基于对以上序列中模式的识别,您可以对此进行许多优化。例如如果你这样重新排列号码:
(1+1+1) + (2+2) + (3)
你可以看到有n
1、(n-1)
2等,直到1
3。这种模式适用于您交付的任何n
。因此,您可以这样做:
sum = 0
for (i = 1 through n)
sum = sum + (n - (i-1))*i;
备选方案#2:已知和
{1..n}上的自然数之和存在闭形式:
sum{1..n} = n*(n+1)/2
因此,我们可以消除内部循环,并简单地这样做:
sum = 0
for (i = 1 through n)
sum = sum + (i * (i+1))/2;
这个,以前的解决方案,或者两个循环的解决方案都将提供相同的结果。你选择哪一个取决于你。
相关文章:
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- Coursera DSA 算法工具箱第 4 周第 2 个问题 - 分区纪念品
- 关于 std::bitset 构造函数的几个问题?
- 程序没有问 3 个问题,而是将我对第一个问题的回答用于其他两个问题
- 关于标准::condition_variables的两个问题
- 我的C++级数计算程序出了什么问题?被困了好几个星期
- 分发我自己的程序的几个问题
- 关于C++容器的两个问题
- 关于退出的三个问题
- 如何让计算机在 7 个问题中正确猜测用户的号码
- 我正在制作一个二十一点程序。我目前有两个问题
- 小型学校项目存在多个问题
- 关于Qt的几个问题
- 关于SDL_Window和unique_ptr的几个问题
- 关于C++内联函数的几个问题
- 我正在尝试[C++]练习多态性和OOD原则。需要指导和几个问题的答案
- 关于C++中数组的几个问题
- 我是C++新手,我有几个问题想问
- C++ - 关于引发异常的几个问题
- 好几个问题