C ++:"预期'('用于函数式转换或类型构造"错误

时间:2018-05-25 22:42:05

标签: c++ arrays xcode vector

有谁知道我的代码有什么问题?我试图创建一个输出整数向量的交替和的程序。例如,如果输入是1 2 3 4,那么结果将是1-2 + 3-4 = -2。如果用户输入" y"该程序也将继续运行。当用户输入" n"。

时停止

我理解我的代码中存在语法错误:将整数作为向量输入时以及调用alternating_sum函数时。不过,我不知道如何解决它。

这是我到目前为止所做的:

#include <iostream>
#include <vector>

using namespace std;

double alternating_sum(vector<int> numbers)
{
    double sum = numbers[0];

    for (int i = 1; i < numbers.size(); i++) // i = position in vector
    {
        if (i % 2 == 0)     // if i is even
        {
            sum += numbers[i];
        }
        else                // if i is odd
        {
            sum -= numbers[i];
        }
    }
    return sum;
}

int main()
{
    char response;

    while (true)
    {
        cout << "Enter a list of integers: ";
        cin >> vector<int> input;

        double result = alternating_sum(vector<int> input);

        cout << "Continue (y/n)? ";
        cin >> response;

        if (response == 'n')
        {
            break;
        }
    }
    return 0;
}

2 个答案:

答案 0 :(得分:0)

正如其他人所提到的那样,需要解决的问题很多。要想到第一个想到的内容,cin >> vector<int> input;您在输入语句中声明了一个变量,但您也无法cin >>向量,它不会在语法上工作。

您必须循环以获取用户提供的每个数字输入,并将其放入数组中。为此,你会写一些类似的东西:

vector<int> v;
int input;
while (cin >> input)
     v.push_back(input);

原因是cin >>实际上只会看到第一个输入值,直到它看到空格或EOF,所以如果您输入类似1 2 3 4 5的内容,则行cin >> input会只在第一次通话时获取值1

答案 1 :(得分:0)

 double result = alternating_sum(vector<int> input);

您还需要这样写

double result = alternating_sum(input);

由于已经定义了输入,因此无需再次执行:)

@samualnj还给了你另一个答案!

一切顺利,并继续编码:D