вход массива не работает

Вопрос:

Входные данные дадут количество тест-кейсов в первой строке.
Затем последуют сами тесты, по одному на строку.
Каждый тестовый пример описывает массив положительных целых чисел со значением 0, отмечающим конец. (этот ноль не должен быть включен в расчеты !!!).
Ответ должен содержать средние значения для каждого массива, округленные до ближайшего целого числа (см. Задачу по округлению), разделенные пробелами.

Проблема:

Работает нормально, но при третьем значении индекса присваивается значение 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

Решение

Во-первых, как говорили другие люди, массив, который вы использовали в этом коде, абсолютно бесполезен. Это ничего не сделало, кроме сохранения массива.

Во-вторых, вы позволяете массиву sum avg иметь тип float. Тем не менее, arrayinput назначается целым числом !! Это означает, что вы никогда не получите такой результат, как этот 2.xxx. Поэтому тип, который вы объявляете для переменных, не имеет смысла. Они должны иметь одинаковое объявление типа. Я не понимаю, почему ваш код не работает хорошо. Потому что, если вы введете целое число, вы не ошибетесь. Но он потерпит крах, если вы дадите номер, такой как 2.xxx или x.xxx.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector