问题:
输入数据将给出第一行中的测试用例数。 然后测试用例本身将跟随,每行一个案例。 每个测试用例描述一个正整数数组,其值为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;
}
答案 0 :(得分:0)
首先,就像其他人说的那样,你在这段代码中使用的数组完全没用。除了保存arrayinput之外什么都没做。
其次,你让arraysize sum avg为float类型。但是,arrayinput被指定为整数!!这意味着你永远不会得到像这样2.xxx的结果。所以你为变量声明的类型是没有意义的。他们应该有相同的类型声明。我不明白为什么你的代码不能正常工作。因为如果你输入整数,你就不会有任何错误。但如果你给出像2.xxx或x.xxx这样的数字,它就会崩溃。