"vector"的存储大小未知

storage size of "vector" isn't known

本文关键字:未知 存储 vector      更新时间:2023-10-16

我得到 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;
}

你的代码中有很多问题。您使用using namespace std; .你应该避免它。在 C++ 代码中使用 c 样式标头。您应该使用 cmath .你包括stdio.hstdlib.h,但你不使用它。您应该将其删除。您正在尝试定义一个没有大小的数组。使用 stl 容器,如 std::array 或 std::vector。您正在读取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;
}