Условие задачи на фото.
код класса:
Код:
class Dev
{
public int number;
public double[] X;
public double[] W;
public double sum;
public double sum2;
public double sqSum;
public double sqSum2;
public double averageValue;
public double standardDeviation;
public double averageValueWPenalties;
public double standardDeviationWPenalties;
public int measurements;
public double Vpn;
public double k;
bool Three;
bool Four;
bool Five;
bool Ten;
public Dev(bool three, bool four, bool five, bool ten, double[] x, double[] w)
{
this.X = x;
this.W = w;
this.Three = three;
this.Four = four;
this.Five = five;
this.Ten = ten;
Number();
VPN(Three, Four, Five, Ten);
AverageValue();
StandardDeviation();
CheckForPenalties();
AverageValueWPenalties();
}
public int Number()
{
number = 0;
for (int i = 0; i < X.Length; i++)
{
if (X[i] != 0)
number++;
}
return number;
}
public double AverageValue()
{
sum = 0;
averageValue = 0;
for (int i = 0; i < X.Length; i++)
{
sum += X[i];
}
averageValue = sum / (double)number;
return averageValue;
}
public double StandardDeviation()
{
sqSum = 0;
for (int i = 0; i < X.Length; i++)
{
sqSum += Math.Pow((X[i] - averageValue), 2);
}
standardDeviation = Math.Sqrt(sqSum / ((double)number - 1));
return standardDeviation;
}
public double VPN(bool Three, bool Four, bool Five, bool Ten)
{
if (Three)
{
Vpn = 1.4;
}
if (Four)
{
Vpn = 1.7;
}
if (Five)
{
Vpn = 1.9;
}
if (Ten)
{
Vpn = 2.3;
}
return Vpn;
}
public int CheckForPenalties()
{
measurements = number;
for (int i = 0; i < X.Length; i++)
if (((Math.Abs(X[i] - averageValue)) / standardDeviation) >= Vpn)
{
W[i] = 0;
measurements--;
}
else
{
W[i] = X[i];
}
return measurements;
}
public double AverageValueWPenalties()
{
sum2 = 0;
for (int i = 0; i < W.Length; i++)
{
sum2 += W[i];
}
averageValueWPenalties = sum2 / (double)measurements;
return averageValueWPenalties;
}
public double StandardDeviationWPenalties()
{
sqSum2 = 0;
for (int i = 0; i < W.Length; i++)
{
sqSum2 += Math.Pow((W[i] - averageValueWPenalties), 2);
}
standardDeviationWPenalties = Math.Sqrt(sqSum2 / ((double)measurements - 1));
return standardDeviationWPenalties;
}
Код формы:
Код:
public partial class Form1 : Form
{
Dev dev;
public Form1()
{
InitializeComponent();
double[] X = new double[5];
for (int i = 0; i < 5; i++)
{
X[i] = double.Parse((Controls["textBox" + (i + 1).ToString()] as TextBox).Text, CultureInfo.InvariantCulture);
}
double[] W = new double[20];
dev = new Dev(checkBox1.Checked, checkBox2.Checked, checkBox3.Checked, checkBox4.Checked, X, W);
dev.Number();
dev.VPN(checkBox1.Checked, checkBox2.Checked, checkBox3.Checked, checkBox4.Checked);
dev.AverageValue();
dev.StandardDeviation();
dev.CheckForPenalties();
dev.AverageValueWPenalties();
dev.StandardDeviationWPenalties();
Display_1();
Display_2();
Display_3();
Display_4();
Display_5();
Display_6();
}
private void Display_1()
{
double Value = dev.AverageValue();
label1.Text = Value.ToString("");
}
private void Display_2()
{
double Value = dev.StandardDeviation();
label2.Text = Value.ToString("");
}
private void Display_3()
{
double Value = dev.Number();
label3.Text = Value.ToString("");
}
private void Display_4()
{
double Value = dev.CheckForPenalties();
label4.Text = Value.ToString("");
}
private void Display_5()
{
double Value = dev.AverageValueWPenalties();
label5.Text = Value.ToString("");
}
private void Display_6()
{
double Value = dev.StandardDeviationWPenalties();
label6.Text = Value.ToString("");
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
double[] X = new double[5];
for (int i = 0; i < 5; i++)
{
X[i] = double.Parse((Controls["textBox" + (i + 1).ToString()] as TextBox).Text, CultureInfo.InvariantCulture);
}
double[] W = new double[20];
dev = new Dev(checkBox1.Checked, checkBox2.Checked, checkBox3.Checked, checkBox4.Checked, X, W);
dev.Number();
dev.VPN(checkBox1.Checked, checkBox2.Checked, checkBox3.Checked, checkBox4.Checked);
dev.AverageValue();
dev.StandardDeviation();
dev.CheckForPenalties();
dev.AverageValueWPenalties();
dev.StandardDeviationWPenalties();
Display_1();
Display_2();
Display_3();
Display_4();
Display_5();
Display_6();
}
}
Все компиллируется, но результат выдает явно неверный.
каждый пункт выполняется в этих методах:
1. averageValue()
2. standardDeviation()
3. CheckForPenalties()
4. averageValueWPenalties()
5. standardDeviationWPenalties()
Number() подсчитывает n
каждое http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{i} задается с textBox
значения, возвращаемые каждым методом, выводятся в соответствующую метку на форме (сверху вниз)
все методы выдают ошибочные числа, начиная с CheckForPenalties()