有谁知道我的代码有什么问题?我试图创建一个输出整数向量的交替和的程序。例如,如果输入是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;
}
答案 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