如何返回数组中输入的值的数目

How to return the number of values input into an array?

本文关键字:输入 数组 何返回 返回      更新时间:2023-10-16

目前,我被难住了,无法在这个问题上取得进展。如有任何帮助或指导,我们将不胜感激。第一部分正在工作,但是当我试图在第二部分中返回用户输入的#时,我会得到一个分段错误。以下是对这两个部分的描述::

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