数组输入不工作

array input not working

本文关键字:工作 输入 数组      更新时间:2023-10-16

问题:

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

问题:

工作得很好,但在第三个索引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;
}

首先,正如其他人所说,您在此代码中使用的数组是完全无用的。它除了保存arrayinput什么也没做。

第二,让arraysize sum avg的类型为float。然而,arrayinput被赋值为整数!!这意味着你永远不会得到这样的结果。所以你为变量声明的类型是没有意义的。它们应该有相同的类型声明。我不明白为什么你的代码不能很好地工作。因为如果你输入整数,就不会出错。但如果你给数字2,它就会崩溃。XXX或x.xxx。

相关文章: