经历了一个c ++课程,并被要求创建一个简单的程序来对用户数组中的值求平均值
我想到了id,要加倍努力并学会弄乱其他几种类型。
我在线搜索了c语言中非变量数组的修复程序,我知道这就是狗屎的源头
//manually allocate the space to the array
int** MyArray = new int* [Length_Of_Array]; // i changed it to float to suit my program
因为我的错误越来越严重 ERROR IMAGE
是否有更好的选择(坚持数组而不是向量)?
我的完整代码
#include <iostream>
using namespace std;
//function declare
float Avg(float Array, int Length);
//Variable declare
int Length_Of_Array;
int main()
{
//Declarations
float Result{};
//User defines size of the array
cout << "Please enter the length of your array (Min 5) ";
cin >> Length_Of_Array;
//User Enters x elements into array
cout << "Please enter" << Length_Of_Array << " Digits into the array " << endl;
//manually allocate the space to the array
float** MyArray = new float* [Length_Of_Array];
//Function use
Result = Avg(MyArray, Length_Of_Array);
//Result
cout << "THE AVERAGE OF YOUR ARRAY IS " << Result << endl;
}
float Avg(float** Array, int length) {
int sum{};
//Stores, enters and calculates user enters elements into array
for (int i = 0; i < length; i++) {
cin >> Array[i];
sum += Array[i];
}
return (sum /length);
}
答案 0 :(得分:1)
让我们看一下这个功能:
float Avg(float** Array, int length) {
int sum{};
//Stores, enters and calculates user enters elements into array
for (int i = 0; i < length; i++) {
cin >> Array[i];
sum += Array[i];
}
return (sum /length);
}
Array
的类型为float**
,因此Array[i]
的类型为float *
。但是您无法从float *
中读取std::cin
,并且一维数组不需要float**
。 (**
通常用于矩阵)由于需要使用数组,因此您要做的就是将float**
更改为float*
。
因此您得到float Avg(float* Array, int length)
和float* MyArray = new float[Length_Of_Array];
其他一些提示:
也不要忘记更新Avg
的前向声明;)
如果您不再需要使用delete[] MyArray;
您应该使用一个实际值初始化一个变量,例如由int sum = 0;
插入的int sum{};
。它使您的代码更易于阅读和理解。
答案 1 :(得分:0)
函数定义和声明中的函数签名不匹配。
float** Array
表示数组数组或指向数组的指针。除此之外,您还有内存泄漏的问题。
您可以简单地使用vector代替:
float Avg(std::vector<float>& Array, int length) {
int sum{};
//Stores, enters and calculates user enters elements into array
for (int i = 0; i < length; i++) {
cin >> Array[i];
sum += Array[i];
}
return (sum /length);
}
和:
std::vector<float> MyArray(Length_Of_Array);