Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачник.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Int[] sx; //статистический закон - гистограмма

double Mx; //оценка матожидания

double sko; //оценка среднеквадратического отклонения

NormalRandom nord;

public TestingNormalForm()

{

InitializeComponent();

}

Команда, которая должна выполняться первой, связана с приемом данных, заданных пользователем, формированием массивов и других необходимых структур данных. Как всегда, прием данных от пользователя должен контролироваться. В нашем случае первой должна нажиматься кнопка «Создать контейнеры», обработчик которой выполняет действия, связанные с приемом входных данных. Вот код этого обработчика:

private void button1_Click(object sender, EventArgs e)

{

//Ввод данных с контролем

try

{

N = Convert.ToInt32(textBox1.Text);

if (N == 0)

{

ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException();

throw (ex);

}

}

catch (Exception)

{

MessageBox.Show("Некорректно задано значение N");

return;

}

try

{

m= Convert.ToInt32(textBox2.Text);

if (m == 0)

{

ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException();

throw (ex);

}

}

catch (Exception)

{

MessageBox.Show("Некорректно задано значение m");

return;

}

try

{

MxT = Convert.ToDouble(textBox6.Text);

}

catch (Exception)

{

MessageBox.Show("Некорректно задано значение MxT");

return;

}

try

{

skoT = Convert.ToDouble(textBox5.Text);

}

catch (Exception)

{

MessageBox.Show("Некорректно задано значение skoT");

return;

}

//Создаются контейнеры - массивы X, SX

X = new double[N];

SX = new int[m];

nord = new NormalRandom();

MessageBox.Show("Данные приняты. Массивы созданы");

}

Команда «TestNext» позволяет получить очередное нормальное число с заданными параметрами и отобразить его в соответствующем окне. При каждом выполнении этой команды в окне появляется очередное случайное число. Вот обработчик события Click для этой командной кнопки:

private void button2_Click(object sender, EventArgs e)

{

//Создается случайное число

listBox1.Items.Clear();

X[0] = nord.Next(MxT, skoT);

listBox1.Items.Add(X[0].ToString());

}

Команда «TestNextArray» позволяет получить выборку заданного объема N и отобразить ее в соответствующем окне, заданном элементом ListBox. Обработчик и здесь выглядит совсем просто:

private void button3_Click(object sender, EventArgs e)

{

//Создается выборка

listBox1.Items.Clear();

nord.NextArray(X, MxT, skoT);

for (int i = 0; i < N; i++)

listBox1.Items.Add(X[i].ToString());

}

После того, как выборка создана, можно выполнить команду «TestStatLaw» для получения характеристик выборки. И здесь, конечно же, обработчик события Click вызовет соответствующий метод класса NormalRandom:

private void button4_Click(object sender, EventArgs e)

{

//Создается выборка и другие результаты

listBox1.Items.Clear();

listBox2.Items.Clear();

nord.StatLaw(X, SX, out Mx, out sko);

for (int i = 0; i < N; i++)

listBox1.Items.Add(X[i].ToString());

for (int i = 0; i < m; i++)

listBox2.Items.Add(SX[i].ToString());

textBox3.Text = Mx.ToString();

textBox4.Text = sko.ToString();

}

Теперь, когда гистограмма построена, можно ее визуально отобразить, что и делает команда «Построить команду», вызывающая метод класса NormalRandom, который в свою очередь вызывает метод DrawGis формы GistForm:

private void button5_Click(object sender, EventArgs e)

{

//Построить гистограмму

nord.DrawGis(SX);

}

В заключение этой главы взгляните на рис. 12, отображающий гистограмму, построенную по данным, показанным на рис. 11.

Рис. 12 Гистограмма, построенная по данным выборки, показанной на рис. 11