2017-01-27 63 views
-5

我想制作一个程序,让用户在数组中插入一些数字,然后再打印出来。问题是当我试图做到这一点(可以说我的数组的大小为100),那么: 它应该做什么:插入 - 1,2,3,4,5 - >应该打印1,2,3,4,5 但是,它打印 - >1,2,3,4,5,0,0,0,0,0,0, ....直到我的数组大小。 有什么办法可以摆脱那些零? 代码:当打印出在堆上声明的数组时,会返回零。 C++

int SIZE = 100; 
int main() 
{ 
int *numbers; 
numbers = new int[SIZE]; 
int numOfElements = 0; 
int i = 0; 
cout << "Insert some numbers (! to end): "; 
while((numbers[i] != '!') && (i < SIZE)){ 
    cin >> numbers[i]; 
    numOfElements++; 
    i++; 
} 
for(int i = 0; i < numOfElements; i++){ 
    cout << numbers[i] << " "; 
} 
delete [] numbers; 
return 0; 
} 
+1

首选在手动分配的数组上使用'std :: vector'(或'std :: array')。 – You

+1

你想在这里做些什么'数字[i]!='!''? – P0W

+0

您检查“!!”的错误数组条目。每一个条目都会被检查,但是你要把输入放在那里导致这种情况非常没用。如果你输入了''!'',你应该检查循环中的输入和'break'。 – jotasi

回答

0

获取numOfElements从用户输入事先。例如

int main() { 
    int n; 
    cin >> n; 
    int * a = new int[n]; 
    for (int i = 0; i < n; ++i) 
     cin >> a[i]; 
    for (int i = 0; i < n; ++i) 
     cout << a[i] << endl; 
    delete[] a; 
} 

输入

4 
10 20 30 40 

输出

10 20 30 40 
0

你增加numOfElements不管什么类型的用户。只需做到这一点:

if(isdigit(numbers[i])) 
{ 
    numOfElements++; 
} 

这将计数数字,而不是字符。如果您希望用户输入多位数字,它当然可能仍然过于粗糙。

+0

但是这并没有结束循环,是吗?你应该添加一个'else break;' – jotasi

+0

另外'numbers [i]'是一个整数。在将它写入数组之前,您不必检查输入吗? – jotasi

+0

@jotasi显然,OP将输入读取为字符,但喜欢将它们存储为整数。我想代码中可能有太多的错误来挽救它。 – Lundin