【问题标题】:C++: "Expected '(' for function-style cast or type construction" ErrorC ++:“预期'('用于函数样式转换或类型构造”错误
【发布时间】:2018-11-05 08:30:32
【问题描述】:

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

【问题讨论】:

  • 什么是语法错误?它们出现在哪一行?
  • 第 32 行:cin >> 向量 输入;和第 34 行:double result = altering_sum(vector input);
  • @CatherineJennifer -- 如果问题在于输入值,那不应该是重点,而不是计算吗?创建一个小程序,将值一个一个地输入到向量中,并且只完成这项工作。如果您对此有疑问,那么您可以专注于提问。计算代码让人们相信问题出在计算上。
  • cin &gt;&gt; vector&lt;int&gt; input; Your rubber duck 想知道为什么要在输入语句中声明变量。
  • @scohe001 我懒得指出所有这些错误的 OP 代码,而是我可以给出一个简单的修复,并建议他阅读有关 std::vector 的一些内容。

标签: c++ arrays xcode vector


【解决方案1】:
 double result = alternating_sum(vector<int> input);

你还需要把它写成

double result = alternating_sum(input);

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

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

一切顺利,继续编码:D

【讨论】:

    【解决方案2】:

    正如其他人所提到的,有很多问题需要解决。首先想到的是,cin &gt;&gt; vector&lt;int&gt; input; 您在输入语句中声明了一个变量,但您也不能将cin &gt;&gt; 定义为向量,它在语法上不起作用。

    您必须循环获取用户提供的每个数字输入,并以这种方式将其放入数组中。为此,您可以编写如下内容:

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

    原因是cin &gt;&gt; 真的只吃第一个输入值,直到它看到空格或EOF,所以如果你输入类似1 2 3 4 5 的行cin &gt;&gt; input 只会获取值1 on第一次通话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 2016-03-14
      相关资源
      最近更新 更多