0
質問:配列入力が機能しない
入力データは、最初の行にテストケースの数を示します。 次に、テストケースそのものが1行に1つずつ続きます。 各テストケースには、ゼロマーキングの値が正の整数の配列が記述されています。 (このゼロを計算に含めないでください!!!)。 回答には、各配列の平均値が最も近い整数(四捨五入のタスクを参照)に丸められ、スペースで区切られている必要があります。
問題:
細かい動作しますが、第三indice和で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サイズの配列を持っていますが、後でそれが存在しない要素に割り当てています。それはUBです。 – krzaq
配列サイズはゼロです。サイズを指定してください。またはベクトルを使用する –
さらに、上記のすべてに加えて、配列もベクトルも必要ありません。これは配列やベクトルを使わずに行うことができます。ベクターや配列の助けを借りて何かを手作りして渡すと、この割り当ては失敗します。 –