数组输入无效

时间:2016-10-08 15:25:18

标签: c++ arrays

问题:

输入数据将给出第一行中的测试用例数。 然后测试用例本身将跟随,每行一个案例。 每个测试用例描述一个正整数数组,其值为0标记结束。 (这个零不应该包含在计算中!!!)。 答案应包含每个数组的平均值,四舍五入到最接近的整数(请参阅舍入任务),用空格分隔。

问题:

工作正常,但在第三个indice sum指定了arrayInput的值,它会搞砸一切。为什么会发生这种情况,我该如何解决?

 //araytest
#include<cmath>
#include<iostream>

using namespace std;

int main()
{
    //var 
    int i = 0;


    int array[13] = {};

    //take in # arrays
    cin >> i;
    for(int x = 0; x<i; x++ )
    {
        //reset variables (for every array)
        float arraySize = 0,
        sum = 0, avg = 0;
        int indice = 0, 
        arrayInput = 0;

        while(cin >> arrayInput){
            if(arrayInput == 0)
            {
                if(indice == 0)
                {
                    arraySize = 1; /*if only 0 put in first indice
                                    to prevent divide by 0 */
                    break;
                }

                else
                {
                    arraySize = indice; // 0 doesn't count
                    break;
                }   
            }

            sum += arrayInput;
            array[indice] = arrayInput;
            arrayInput = 0;
            indice++;
        }   

        avg = round(sum/arraySize); 
        cout << avg << " ";
    }

    return 0;
}

1 个答案:

答案 0 :(得分:0)

首先,就像其他人说的那样,你在这段代码中使用的数组完全没用。除了保存arrayinput之外什么都没做。

其次,你让arraysize sum avg为float类型。但是,arrayinput被指定为整数!!这意味着你永远不会得到像这样2.xxx的结果。所以你为变量声明的类型是没有意义的。他们应该有相同的类型声明。我不明白为什么你的代码不能正常工作。因为如果你输入整数,你就不会有任何错误。但如果你给出像2.xxx或x.xxx这样的数字,它就会崩溃。