“向量”的存储大小未知

时间:2019-04-28 16:42:12

标签: c++

我得到2个错误: 错误:“ vettore”的存储大小未知 错误:“]”令牌之前的预期主表达式

我不知道尝试什么,因为我很喜欢编程。

#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

double funzione(double vettore[]);

int main()
{
    double vettore[];
    funzione(vettore[]);
}
double funzione(double vettore[])
{
    int a;
    cin >> a;

    double somma = 0, media, risultato;
    int i = -1;
    for (i = 0; i < a; i++) {
        cin >> vettore[i];
    }
    if (vettore[a] > 0) {
        for (i = 0; i < a; i++) {
            somma = somma + vettore[i];
        }
        media = somma / a;
    }
    else if (vettore[a] < 0) {
        for (i = 0; i < a; i++) {
            risultato = abs(vettore[i]);
            somma = somma + risultato;
        }

        media = (somma / a) * (-1);
    }
    return media;
}

1 个答案:

答案 0 :(得分:1)

您的代码中有很多问题。您使用using namespace std;。你应该避免它。您可以在c ++代码中使用c样式的标头。您应该使用cmath。您包括stdio.hstdlib.h,但没有使用。您应该将其删除。您正在尝试定义没有大小的数组。使用类似std::arraystd::vector的stl容器。您正在读取a元素,然后检查vettore[a]是正还是负。那是超出范围的。 vettore[a - 1]是最后一个元素。我在代码中固定了所有这些点。

#include <iostream>
#include <vector>
#include <cmath>

double funzione();

int main()
{
    std::cout << funzione();
}
double funzione()
{
    std::vector<double> vettore;
    int a;
    std::cin >> a;

    double somma = 0, media, risultato;
    for (int i = 0; i < a; i++) {
    double value;
        std::cin >> value;
        vettore.emplace_back(value);
    }
    if (vettore[a - 1] > 0) {
        for (int i = 0; i < a; i++) {
            somma = somma + vettore[i];
        }
        media = somma / a;
    }
    else if (vettore[a - 1] < 0) {
        for (int i = 0; i < a; i++) {
            risultato = std::abs(vettore[i]);
            somma = somma + risultato;
        }

        media = (somma / a) * (-1);
    }
    return media;
}