Вопрос:Вход массива не работает
Ввод данных даст количество тестовых примеров в первой строке. После этого будут выполняться сами тесты, по одному случаю в строке. В каждом тестовом случае описывается массив положительных целых чисел со значением конца маркировки 0. (этот нуль не должен включаться в вычисления !!!). Ответ должен содержать средние значения для каждого массива, округленные до ближайшего целого числа (см. Задачу округления), разделенные пробелами.
Проблема:
работает отлично, но в третьей сумме 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
Размер массива равен нулю. Дайте ему размер. Или используйте вектор –
И, помимо всего перечисленного, не нужен ни массив, ни вектор. Это может быть выполнено без использования массива или вектора, и я подозреваю, что если вы передадите что-то мощенное вместе с помощью вектора или массива, вы не сможете выполнить это задание. –