在这里,我有一个程序,提示用户输入数组的大小,然后询问用户整数并计算平均值。我缺少一些东西,数字没有存储到数组中。
int n;
int *sizeOfArr;
double total = 0;
double avg;
cout << "Please enter n, for size of array: ";
cin >> n;
sizeOfArr = new int[n]; //dynamically allocates n amount of memory
for (int i = 1; n >= i; i++){
cout << "Enter number " << i << ": ";
cin >> sizeOfArr[n];
if (sizeOfArr[n] < 0){
do{
cout << "Please enter postive number for number " << i << ": ";
cin >> sizeOfArr[n];
} while (sizeOfArr[n] <= 0);
}
total += sizeOfArr[n];
}
avg = total / n; //average formula
cout << "\nAverage of the numbers stored in dynamic array = " << avg << endl; //output
return 0;
system("pause");
最佳答案
使用std :: vector而不是动态数组int *。您无需向用户询问size(),只需通过std :: vector.push_back()动态添加变量即可。可以通过调用std :: vector.size()获得大小。
您的代码中有一些错误:循环从int i = 1开始;错了数组的第一个索引为0。引用向量项时也是如此:您必须设置sizeOfArr [i]而不是sizeOfArr [n]。
现在是计算平均值的点:
您的计算使用int进行。如果以这种方式计算,结果将是错误的。您应该使用double来做到这一点。