Поместите
variance += ((numbers[i] - (double)mean) * (numbers[i] - (double)mean));
вне первого для l oop в другое для l oop. И код будет таким:
#include <iostream>
using namespace std;
int main()
{
int arraySize = 10;
int numbers[10];
int input, total = 0, size = 0, mean = 0;
double variance = 0;
for (int i = 1; i < arraySize; i++) {
cout << "Enter number " << i << " (-1 to end): ";
cin >> input;
if (input == -1) {
break;
}
else {
numbers[i] = input;
}
total += numbers[i];
size++;
mean = total / size;
}
for(int i=1; i<=size;i++)
variance += ((numbers[i] - (double)mean) * (numbers[i] - (double)mean));
variance /= (double)size;
cout << "The mean is: " << mean << endl;
cout << "The variance is: " << variance << endl;
}
При вычислении дисперсии вам нужно среднее значение всех чисел в массиве, а не среднее значение после каждого ввода.