如何返回数组中输入的值的数目
How to return the number of values input into an array?
目前,我被难住了,无法在这个问题上取得进展。如有任何帮助或指导,我们将不胜感激。第一部分正在工作,但是当我试图在第二部分中返回用户输入的#时,我会得到一个分段错误。以下是对这两个部分的描述::
P2.1编写一个由main和displayArray函数组成的程序。主函数声明一个包含10个元素的整数数组,同时用最多10个任意值初始化它们。然后,main函数调用displayArray函数来显示数组的内容。
P2.2使用额外的fillArray函数扩展P2.1,该函数提示用户输入最多10个(数组大小)整数。由于静态分配的数组通常部分填充的值小于数组的实际大小或存储容量(本例中为10),因此fillArray函数必须返回一个正整数值,表示用户输入的实际输入值数。
#include <iostream>
using namespace std;
int displayArray(int arr[]);
int fillArray(int newArray[], int &inputs);
const int size = 10;
int main() {
int x, inputs = 0;
int arr[size] = {0,1,2,3,4,5};
int newArray[] = {};
displayArray(arr);
cout << "Enter .5 when finished. ";
fillArray(newArray, inputs);
cout << inputs;
cin >> x;
return 0;
}
int displayArray(int arr[]) {
for (int i = 0; i < size; i++)
cout << arr[i] << " " << endl;
}
int fillArray(int newArray[], int &inputs) {
for(int i = 0; ; i++) {
cout << "Enter an integer: " << endl;
cin >> newArray[i];
if(newArray[i] == .5) {
inputs = i + 1;
return inputs;
break;
}
}
}
您不为newArray
保留内存,因为int newArray[] = {}
将分配一个大小为0
的数组(据我所知,实际上甚至没有定义)。因此,当调用fillArray
时,您将超出数组边界。
写入
int newArray[10] = { 0 }
如果输入的值不超过10
,那么它至少应该有效。
此外,在fillArray
中,为了不越界,我会写。。。
int fillArray(int newArray[], int &inputs) {
for(inputs = 0; inputs < 10 ; inputs++) {
cout << "Enter an integer: " << endl;
cin >> newArray[i];
if(newArray[i] == 0) {
break;
}
}
inputs++;
return inputs;
}
进一步注意,newArray[i] == .5
至少是误导性的,因为newArray
是类型int
,而.5
是浮点值。它永远不会计算为true
,因为积分值newArray[i]
在比较之前将被转换为float
,并且这种转换永远不会产生0.5
。
相关文章:
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- C++逗号分隔的输入数组代码过早退出
- 如何输入数组的元素,每次获得新元素时,我们将其放在数组的中间?
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- 使用 cin 输入数组值
- 与 C++ 中一行中的用户输入数组元素相关的问题
- 将整数输入数组的方法比 scanf() 或 cin 更快?
- 如何在C 中动态输入数组
- 我想添加两个字符串类型的矩阵.用户将不会输入行数或列的数量.用户将仅输入数组
- 测试用户输入数组中的重复项的最有效方法是什么?
- 在用户输入数组中查找元音
- 如何将用户输入数组值移动到数组末尾并将其设置为 0
- 函数是否可以用较小的输入数组编写输入数组
- C++ 将数字输入数组并输出
- 需要帮助传递数组和输入数组
- 用户输入数组大小(N).从 0 到 N 的数字填充数组
- 输入int之后的字符的c++输入数组
- 合并排序 - 返回新数组,而不是将合并的数组复制到输入数组
- 在C 函数中声明输入数组的大小
- 在 cpp 中使用 getline 输入数组中的空格分隔数字