需要将n个数字存储在动态数组中
need to store n numbers in dynamic array
在这里,我有一个程序来提示用户输入数组的大小,然后向用户询问整数并计算平均值。我缺少一些东西,数字没有存储在数组中。
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。
实际上应该是 sizeOfArr[i-1]
而不是 sizeOfArr[n]
您的迭代索引i
从1开始,但数组索引应从0
您正在使用错误的变量索引sizeOfArr[]
-您应该使用loop变量i
作为索引。另外,由于您从1到N,而不是通常的0到N -1,因此您需要调整索引以补偿这一点。因此,要么更改所有出现:
sizeOfArr[n]
to:
sizeOfArr[i - 1]
或将for循环更改为更典型的形式:
for (int i = 0; i < n; ++i)
然后使用:
sizeOfArr[i]
使用sizeOfArr[i]
代替sizeOfArr[n]
相关文章:
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 输出没有重复元素的动态数组(收缩数组)C++
- 正在插入动态数组
- 如何在动态数组上使用搜索函数
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 静态数组的自由动态数组
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 为什么 c++ 动态数组的大小没有改变?
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 指针的 C++ 动态数组 - 何时需要使用它?
- 删除动态数组时未定义标识符
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 动态数组的 C++ 重载加运算符
- 基于数组的列表 - 动态数组创建时出错