C++ Can';t求向量中元素的和
由于某种原因,我无法对向量中的元素求和。当我运行程序时,控制台只打印出第一个元素。例如,如果我的输入是:C++ Can';t求向量中元素的和,c++,vector,C++,Vector,由于某种原因,我无法对向量中的元素求和。当我运行程序时,控制台只打印出第一个元素。例如,如果我的输入是:12 23 45 56(全部在一行中),则输出是12 #include <iostream> #include <vector> #include <string> #include <cmath> #include <numeric> using namespace std; int main() { 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;
}
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
向量myVector;
int numberOfValuesToSum=10;
int向量值=0;
整数和=0;
//cout>numberOfValuesToSum;
cout>矢量值;
myVector.push_back(向量值);
for(int i:myVector){
总和+=i;
cout空格将值与其他值分开。当您按空格键时,它会将第一个值视为结束,因此它会继续移动,直到下一个语句请求它。数组将它看到的所有值(仅第一个)相加,然后程序结束。如果您想要一个正确的程序,请执行此操作
#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
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
向量myVector;
int numberOfValuesToSum=10;
int向量值=0;
整数和=0;
cout>numberOfValuesToSum;
int count=1;//计数器
while(numberOfValuesToSum>=计数){
cout>矢量值;
cout空格将值与其他值分开。当您按空格键时,它会将第一个值视为结束,因此它会继续移动,直到下一个语句请求它。数组将它看到的所有值(仅第一个)相加,然后程序结束。如果您想要一个正确的程序,请执行此操作
#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
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
向量myVector;
int numberOfValuesToSum=10;
int向量值=0;
整数和=0;
cout>numberOfValuesToSum;
int count=1;//计数器
while(numberOfValuesToSum>=计数){
cout>矢量值;
cout您需要在循环中的向量中输入值。此外,您还可以使用标题
中声明的标准算法std::acculate
来计算总和。并且您应该至少在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;
}
您需要在循环中的向量中输入值。此外,您还可以使用标题
中声明的标准算法std::acculate
来计算总和。并且您应该至少在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;
}
在提供12 23 45 56
的示例中,必须将其转换为int vectorValues
行中的cin>
,但是vectorValues
是一个int
(单个数字,而不是数字数组(不是vector
).由于空格是分隔符,12
将被提取并转换为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;
}
#包括
#包括
使用名称空间std;
int main(){
向量myVector;
//提供多个空格分隔的数字,按ENTER键接受它们
cout>value;//将提供的每个值从字符串转换为int
myVector.push_back(value);//向向量添加int
}
整数和=0;
for(int i:myVector){
总和+=i;
}
cout在提供12 23 45 56
的示例中,必须将其转换为int vectorValues
行中的cin>
,但是vectorValues
是一个int
(单个数字,而不是数字数组(不是向量
).由于空格是分隔符,12
将被提取并转换为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;
}
#包括
#包括
使用名称空间std;
int main(){
向量myVector;
//提供多个空格分隔的数字,按ENTER键接受它们
cout>value;//将提供的每个值从字符串转换为int
myVector.push_back(value);//向向量添加int
}
整数和=0;
for(int i:myVector){
总和+=i;
}
你能不能叫push_back()
循环外ie只有一次,所以你只能得到一个值我猜你想要的是这样的东西:你需要标记输入以获得单个数字或单独获得每个输入。vectorValues
是一个int
。它只能存储单个int
。这意味着cin>>矢量值没有办法;
从输入中提取多个int
。您应该熟悉调试器。一个好的调试器可以让您检查vectorValues
和myVector
,这将立即显示它们都只包含一个值。可能重复调用push\u back()
循环外ie只有一次,所以你只能得到一个值我猜你想要的是这样的东西:你需要标记输入以获得单个数字或单独获得每个输入。vectorValues
是一个int
。它只能存储单个int
。这意味着cin>>矢量值没有办法;
从输入中提取多个int
。您应该熟悉调试器。一个好的调试器可以让您检查vectorValues
和myVector
,这将立即显示它们都只包含一个值。可能重复