C ++: «Ожидается» («для приведения типа функции или построения типа» Ошибка - PullRequest
0 голосов
/ 26 мая 2018

Кто-нибудь знает, что не так с моим кодом?Я пытаюсь создать программу, которая выводит переменную сумму вектора целых чисел.Например, если входное значение равно 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;
}

1 Ответ

0 голосов
/ 26 мая 2018

Как уже упоминали другие, многое нужно исправить.Чтобы назвать первое, что приходит на ум, 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 только при первом вызове.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...