我得到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;
}
答案 0 :(得分:1)
您的代码中有很多问题。您使用using namespace std;
。你应该避免它。您可以在c ++代码中使用c样式的标头。您应该使用cmath
。您包括stdio.h
和stdlib.h
,但没有使用。您应该将其删除。您正在尝试定义没有大小的数组。使用类似std::array或std::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;
}