C++:"Expected '(' for function-style cast or type construction"错误

C++: "Expected '(' for function-style cast or type construction" Error

本文关键字:or type 错误 construction cast Expected C++ for function-style      更新时间:2023-10-16

有人知道我的代码出了什么问题吗?我正在尝试创建一个程序来输出整数向量的交替和。例如,如果输入为 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;
}

正如其他人所提到的,有很多问题需要解决。举出想到的第一个,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抓取值。

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

您还需要将其写为

double result = alternating_sum(input);

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

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

万事如意,继续编码:D

相关文章: