Ошибка функции массива C ++: подписанное значение не является массивом, указателем или вектором - PullRequest
0 голосов
/ 14 апреля 2020

Я получаю следующую ошибку: подписанное значение не является массивом, указателем или вектором. Кто-нибудь может посоветовать, как решить эту проблему? Я получаю сообщение об ошибке в функции void GetData в нижней части строки, которая гласит: «vals [valCount] = value;». Спасибо!

#include <iostream>
#include <iomanip>
#include <array>

using namespace std;

//function declarations
void GetData(double vals, int valCount);
void Sort(double vals, int valCount);
double Variance(double vals, int valCount);
double StandardDev(double vals, int valCount);
double SqRoot(double value); //use for StandardDev function

//function definitions
int main ()
{
    double sum = 0,
        variance = 0,
        standardDev = 0,
        vals = 0;

    int valCount = 0;        //number of values to be processed

    //ask user how many values
    cout << "Enter the number of values (0 - 100) to be processed: ";
    cin >> valCount;

    //process and store input values
    GetData(vals, valCount);

    //output
    cout << "\nValues in Sorted Order: " << sum;
    cout << "\n\nThe variance for the input value list is: " << variance;
    cout << "\nThe standard deviation for the input list is: " << standardDev;
    cout << "\n\nPress any value to exit this program\n" << endl;

    return 0;

}

//process and store data
void GetData(double vals, int valCount)
{
    int value; valCount = 0;

    cout << "Enter a value: ";
    cin >> value;

    while (value != 0) {
        vals[valCount] = value;
        valCount++;

    cout << "/nEnter a value: ";
    cin >> value;
    }
}

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

vals является двойным, что означает, что он может содержать только одно значение. Вам нужен массив или вектор. Также в GetData вы l oop, в то время как значение не равно 0, но вы уже получили valCount от пользователя, поэтому вам следует использовать a от l oop до l oop это количество раз.

#include <iostream>
#include <iomanip>
#include <array>

using namespace std;

//function declarations
void GetData(double* vals, int valCount);
void Sort(double* vals, int valCount);
double Variance(double* vals, int valCount);
double StandardDev(double* vals, int valCount);
double SqRoot(double value); //use for StandardDev function

//function definitions
int main ()
{
    double sum = 0,
        variance = 0,
        standardDev = 0;
    double vals[100];

    int valCount = 0;        //number of values to be processed

    //ask user how many values
    cout << "Enter the number of values (0 - 100) to be processed: ";
    cin >> valCount;

    //process and store input values
    GetData(vals, valCount);

    //output
    cout << "\nValues in Sorted Order: " << sum;
    cout << "\n\nThe variance for the input value list is: " << variance;
    cout << "\nThe standard deviation for the input list is: " << standardDev;
    cout << "\n\nPress any value to exit this program\n" << endl;

    return 0;
}

//process and store data
void GetData(double* vals, int valCount)
{
    for(int i = 0; i < valCount; i++)
    {
        cout << "Enter a value: ";
        cin >> vals[i];
    }
}
0 голосов
/ 14 апреля 2020

vals в вашем коде не является массивом.
Следовательно, вы не можете сделать vals [x] , что означает доступ к элементу по x-му индексу.

...