簡體   English   中英

C++:“預期的 '(' 用於函數式強制轉換或類型構造”錯誤

[英]C++: “Expected '(' for function-style cast or type construction” Error

有誰知道我的代碼有什么問題? 我正在嘗試創建一個輸出整數向量的交替和的程序。 例如,如果輸入是 1 2 3 4,那么結果將是 1-2+3-4 = -2。 如果用戶輸入“y”,程序也將繼續運行,並在用戶輸入“n”時停止。

我知道我的代碼中存在語法錯誤:將整數作為向量輸入時以及調用 alter_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> input; 您在輸入語句中聲明了一個變量,但也不能將cin >>轉換為向量,它在語法上不起作用。

您必須循環獲取用戶提供的每個數字輸入,然后以這種方式將其放入數組中。 為此,您將編寫如下內容:

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

這樣做的原因是cin >>實際上只吃第一個輸入值,直到它看到空格或EOF ,所以如果您輸入類似1 2 3 4 5cin >> input行只會在第一次調用時獲取值1

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

你還需要把它寫成

double result = alternating_sum(input);

由於已經定義了輸入,因此無需再次執行:)

@samualnj 也給了你另一個答案!

一切順利,繼續編碼:D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM