Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2016, 21:54   #1
ZRoman31
 
Регистрация: 30.10.2016
Сообщений: 5
По умолчанию ошибка в программе, выполняющей математическую задачу

Условие задачи на фото.

код класса:

Код:
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()
Изображения
Тип файла: jpg 20161030_213731.jpg (64.8 Кб, 119 просмотров)
Тип файла: jpg Снимок экрана (27).jpg (81.0 Кб, 119 просмотров)
ZRoman31 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разработка программы, выполняющей целочисленное вычисление значения y по заданному целочисленному значению x Ipman222 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 31.05.2014 20:11
В какой программе решить задачу? NazaRik555 Помощь студентам 4 21.10.2013 20:51
ошибка в программе julia9311 Общие вопросы C/C++ 1 19.12.2012 03:19
пожалуйста помогите решить задачу в программе Excel @Diman@ Microsoft Office Excel 3 19.11.2008 22:43