Dynamic Array C ++无法正常工作

时间:2014-08-22 08:41:56

标签: arrays dynamic sum

我的动态数组有问题。

练习如下:

让用户输入N个数字,并在用户输入数字-1时让程序停止。最后给出所有数字的总和。

示例:

1号: 10

2号: 10

3号: -1

数字的总和是:20。

我的代码正常工作,但它总是给出-1的总和,所以我的和的输出是19,而不是20。

这是我的代码:

int number = 0;
int sum=0;
int *array = new int[number];

do
{
cout <<"Number " << (i+1) << ": ";
cin >> array[number];
i++;
sum+=array[number];
} while (array[number] != -1);


cout <<"Sum of the numbers is: " << sum;

delete[] array;

如果我编辑我的:

cout << sum;

要:

cout << sum+1;

它完美无缺,但这并不是锻炼身体的正确方法。我想我的老师不会批准解决这个问题的方法。或者我认为解决这个问题的正确方法是什么?

我很想知道我的错误以及解决这个问题的正确方法。

谢谢!

2 个答案:

答案 0 :(得分:1)

也许你可以这样做:

bool continue = true;
while(continue)
{
    cout <<"Number " << (i+1) << ": ";
    cin >> array[number];
    i++;
    if(array[number] == -1)
        continue = false;
    else
        sum+=array[number];
}

试试这个让我知道;)

答案 1 :(得分:0)

初始化:

int number = 0;
int *array = new int[number];

给出一个0大小的数组。您无法访问其“第一个”元素

 array[0]