Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';t求向量中元素的和_C++_Vector - Fatal编程技术网

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
,这将立即显示它们都只包含一个值。可能重复