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

4. Методичні вказівки виконання роботи

Розглянемо деякі питання написання програми на прикладі програми, яка в - елементному масиві випадкових цілих чисел з діапазону [k,m) переносить всі мінімальні і за ними всі максимальні числа на початок масиву, після чого всі останні числа впорядковує за зростанням або спаданням за вибором користувача.

Вікно програми показане на рис. 8.1, з якого видно, що для введення величин , , застосовані компоненти TextBox. Вибір напрямку упорядкування забезпечують дві радіо-кнопки. Три наступні компонента TextBox заабезпечують виведення первинного масиву, масиву після перестановки екстремальних елементів на початок масиву і виведення обробленого масиву. Створення масиву і всі операції з масивом виконуються після натиснення керуючої кнопки з надписом "Обчислити".

Рис. 8.1. Вікно програми

Величини a, b, n, qExt і масив V об’явимо полями класу Form1: int a, b, n, qExt; int[] V; Змінна qExt призначена для зберігання загальної кількості мінімальних і максимальних (тобто екстремальних) чисел масиву V. Виведення початкових (за замовченням) значень величин a, b, n зробимо в методі-конструкторі форми:

public Form1()

{

InitializeComponent();

numericUpDown1.Value = 1;

numericUpDown2.Value = 6;

numericUpDown3.Value = 50;

}

Керуючий метод-процедура цієї програми button1_Click викликає метод введення даних InpData, створює n-елементний масив V, методом FillMas заповнює масив цілими випадковими числами, методом Out1Mas виводить початковий масив (до обробки) на екран, виконує перестановку екстремальних чисел методом Perestanovka, методом Out2Mas виводить на екран масив з переставленими елементами, методом SortMas закінчує обробку масиву упорядкуванням (n - qExt) останніх чисел і виведить оброблений масив на екран методом Out3Mas. Текст процедури button1_Click такий:

private void button1_Click(object sender, EventArgs e)

{

InpData(out k, out m, out n);

int[] V = new int[n];

FillMas(k, m, n, V);

Out1Mas(V);

Perestanovka(out qExt, V);

Out2Mas(V);

SortMas(qExt, V);

Out3Mas(V);

}

Тексти всіх згаданих методів приведені нижче:

private void InpData(out int k, out int m, out int n)

{

k = Convert.ToInt32(numericUpDown1.Value);

m = Convert.ToInt32(numericUpDown2.Value);

n = Convert.ToInt32(numericUpDown3.Value);

}

private void FillMas(int k, int m, int n, int[] V)

{

Random rnd = new Random();

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

V[i] = rnd.Next(k, m);

}

private void Out1Mas(int[] V)

{

textBox4.Clear();

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

textBox4.AppendText

(string.Format(" {0} {1} \n", i, V[i]));

}

private void Perestanovka(out int qExt, int[] V )

{

int min, max, buf;

// значення min, max

min = V[0]; max = V[0];

foreach (int x in V)

{

if (x < min) min = x;

if (x > max) max = x;

}

//кількість qext екстремумів min, max і їх перестановка

qExt = 0;

for (int i = 0; i <= V.Length - 1; i++)

{ //перестановка мінімальних елементів

if (V[i] == min)

{

qExt += 1;

buf = V[qExt - 1];

V[qExt - 1] = V[i];

V[i] = buf;

}

}

for (int i = qExt; i <= V.Length - 1; i++)

{ //перестановка максимальних елементів

if (V[i] == max)

{

qExt += 1;

buf = V[qExt - 1];

V[qExt - 1] = V[i];

V[i] = buf;

}

}

}

private void Out2Mas(int[] V)

{

textBox5.Clear();

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

textBox5.AppendText

(string.Format(" {0} {1} \n", i, V[i]));

}

private void SortMas(int qExt, int[] V)

{

int min, max, index, buf;

//упорядкування за зростанням

if (radioButton1.Checked)

{

for (int i = qExt; i <= V.Length - 2; i++)

{

min = V[i];

index = i;

for (int j = i; j <= V.Length - 1; j++)

{

if (V[j] < min)

{

min = V[j];

index = j;

}

}

buf = V[i];

V[i] = V[index];

V[index] = buf;

}

}

//упорядкування за спаданням

if (radioButton2.Checked)

{

for (int i = qExt; i <= V.Length - 2; i++)

{

max = V[i];

index = i;

for (int j = i; j <= V.Length - 1; j++)

{

if (V[j] > max)

{

max = V[j];

index = j;

}

}

buf = V[i];

V[i] = V[index];

V[index] = buf;

}

}

}

private void Out3Mas(int[] V)

{

textBox6.Clear();

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

textBox6.AppendText

(string.Format(" {0} {1} \n", i, V[i]));

}

5. Зміст звіту

  1. Номер, тема і мета лабораторної роботи.

  2. Стислі теоретичні відомості.

  3. Постановка задачі.

  4. Текст програми відповідно до завдання з коментарями та результатами.

  5. Висновки.