无法获取向量中元素的总和
Can't get the sum for the elements in a vector
由于某种原因,我无法对向量中的元素求和。 当我运行程序时,控制台只打印出第一个元素。 例如,如果我的输入是:12 23 45 56
(全部在一行中(,则输出为 12
。
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <numeric>
using namespace std;
int main() {
vector<int> myVector;
int numberOfValuesToSum = 10;
int vectorValues = 0;
int sum = 0;
// cout << "Please enter the number of values you want to sum: ";
// cin >> numberOfValuesToSum;
cout << "Please enter some integers: ";
cin >> vectorValues;
myVector.push_back(vectorValues);
for (int i : myVector) {
sum += i;
cout << sum << endl;
}
}
您需要在循环中输入向量中的值。此外,您还可以使用标头<numeric>
中声明的标准算法std::accumulate
计算总和。并且您应该至少在 long long int
类型的对象中累积值,因为总和可能是一个非常大的数字。
这是一个演示程序。
#include <iostream>
#include <vector>
#include <numeric>
int main()
{
size_t numberOfValuesToSum = 10;
std::vector<int> v;
v.reserve( numberOfValuesToSum );
int vectorValues;
std::cout << "Enter " << numberOfValuesToSum << " integer numbers: ";
for ( size_t i = 0; i < numberOfValuesToSum && std::cin >> vectorValues; i++ )
{
v.push_back( vectorValues );
}
long long int sum = std::accumulate( v.begin(), v.end(), 0ll );
std::cout << "sum = " << sum << std::endl;
return 0;
}
它的输出可能看起来像
Enter 10 integer numbers: 0 1 2 3 4 5 6 7 8 9
sum = 45
在
提供12 23 45 56
的示例中,必须在第 cin >> vectorValues;
行中将其转换为 int vectorValues
,但是vectorValues
是一个int
(单个数字,而不是数字数组(不是 vector
((。由于空间是分隔符,因此12
被获取并转换为int
。
因此vector<int> v
只包含一个12
的值,所以总和也是12
的。
我对你的问题的主张如下,它允许输入任意数量的数字:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> myVector;
//provide several space separated numbers, accept them by pressing ENTER
cout << "Please enter some integers: ";
while (cin.peek() != 'n') // check user input if ENTER was provided
{
int value;
cin >> value; // convert each provided value from let's say "string" to int
myVector.push_back(value); // add int to vector
}
int sum = 0;
for (int i : myVector) {
sum += i;
}
cout << "sum = " << sum << endl;
return sum;
}
示例输出:
Please enter some integers: 2 4 8<ENTER>
sum = 14
空格将值与其他值分开。当您按空格键时,它会将其视为结束第一个值,因此它继续前进,等到下一个要求它的语句。数组将它看到的所有值相加(只有第一个(,然后程序结束。如果你想要一个正确的程序,这样做
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <numeric>
using namespace std;
int main() {
vector<int> myVector;
int numberOfValuesToSum = 10;
int vectorValues = 0;
int sum = 0;
cout << "Please enter the number of values you want to sum: ";
cin >> numberOfValuesToSum;
int count = 1; //counter
while ( numberOfValuesToSum >= count ){
cout << "Please enter an integer: ";
cin >> vectorValues;
cout << "/n"
myVector.push_back(vectorValues);
count++;
}
for (int i : myVector) {
sum += i;
cout << sum << endl;
}
cout << "Your sum is: "
cout << sum
}
相关文章:
- 对于set上的循环-获取next元素迭代器
- 在 alglib::real_1d_array 中获取元素总和的奇怪错误
- 如何在 c++ stl 中获取列表中被推回的元素的地址,在常量时间内?
- push_back通过自行创建的对象获取最后一个元素的向量
- 从自定义类获取对象向量中的 max 元素
- 从 c++ 中的链表中获取元素
- 比较它们之间的元素并获取公共值的键
- 获取指向指针的指针元素 (c++)
- CPtrList - 如何获取元素的索引?
- 如何从一个容器中获取某些元素并将其转换插入到另一个容器中?
- 获取结构 c++ 中元素的索引
- 如何获取指针数组中的元素数量?
- 在std::集中获取与给定元素最接近的元素
- 无法获取已填充堆栈<char>的顶部元素
- 检查HTML 5视频元素是否正在获取帧
- 有没有函数可以直接获取 std::vector 元素的大小?
- 从矢量的元素获取指针
- 从 /dev/sd* 元素获取 /dev/disk/by-id 元素
- 2d查找重复元素/获取索引位置并计数重复项
- 为什么来自 rvalued-stl-container 的元素获取者返回左值