117 lines
4.7 KiB
C#
117 lines
4.7 KiB
C#
using laba3.Core;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Forms;
|
||
|
||
namespace ProgLab1.GUI
|
||
{
|
||
public partial class ArraySortGUI : Form
|
||
{
|
||
private long time1;
|
||
private long time2;
|
||
private Label lblArraySize;
|
||
private TextBox txtArraySize;
|
||
private Button btnRun;
|
||
private TextBox txtOutput;
|
||
|
||
public ArraySortGUI(Form onCloseForm)
|
||
{
|
||
// Initialize components
|
||
lblArraySize = new Label
|
||
{
|
||
Location = new System.Drawing.Point(12, 12),
|
||
Name = "lblArraySize",
|
||
Size = new System.Drawing.Size(100, 22),
|
||
Text = "Размер массива:"
|
||
};
|
||
|
||
txtArraySize = new TextBox
|
||
{
|
||
Location = new System.Drawing.Point(150, 12),
|
||
Name = "txtArraySize",
|
||
Size = new System.Drawing.Size(150, 22),
|
||
PlaceholderText = "Размер массива"
|
||
};
|
||
|
||
btnRun = new Button
|
||
{
|
||
Location = new System.Drawing.Point(310, 10),
|
||
Name = "btnRun",
|
||
Size = new System.Drawing.Size(100, 25),
|
||
Text = "Запустить",
|
||
UseVisualStyleBackColor = true
|
||
};
|
||
btnRun.Click += new EventHandler(this.btnRun_Click);
|
||
|
||
txtOutput = new TextBox
|
||
{
|
||
Location = new System.Drawing.Point(12, 50),
|
||
Multiline = true,
|
||
Name = "txtOutput",
|
||
ReadOnly = true,
|
||
ScrollBars = ScrollBars.Vertical,
|
||
Size = new System.Drawing.Size(400, 300),
|
||
WordWrap = true
|
||
};
|
||
|
||
// Set up form
|
||
this.ClientSize = new System.Drawing.Size(424, 361);
|
||
this.Controls.Add(lblArraySize);
|
||
this.Controls.Add(txtArraySize);
|
||
this.Controls.Add(btnRun);
|
||
this.Controls.Add(txtOutput);
|
||
this.Name = "ArraySortGUI";
|
||
this.Text = "Array Sort Demo";
|
||
this.FormClosing += new FormClosingEventHandler((object sender, FormClosingEventArgs e) => {onCloseForm.Show(); });
|
||
}
|
||
|
||
private void btnRun_Click(object sender, EventArgs e)
|
||
{
|
||
int size;
|
||
if (!int.TryParse(txtArraySize.Text, out size) || size < 1)
|
||
{
|
||
MessageBox.Show("Размер массива должен быть числом больше 0!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
return;
|
||
}
|
||
txtOutput.Clear();
|
||
Utils.Arrays array1 = new Utils.Arrays(size, 100);
|
||
Utils.Arrays array2 = new Utils.Arrays(array1);
|
||
|
||
txtOutput.AppendText("Для Массива 1 будет использована \"гномья сортировка\"" + Environment.NewLine);
|
||
txtOutput.AppendText("Для Массива 2 будет использована \"сортировка шелла\"" + Environment.NewLine);
|
||
|
||
if (size <= 10)
|
||
{
|
||
txtOutput.AppendText("Массив 1 (с начальными значениями): " + Environment.NewLine + array1.ToString() + Environment.NewLine);
|
||
txtOutput.AppendText("Массив 2 (с начальными значениями): " + Environment.NewLine + array2.ToString() + Environment.NewLine);
|
||
}
|
||
else
|
||
{
|
||
txtOutput.AppendText("Массивы не могут быть выведены на экран так как их размер больше 10" + Environment.NewLine);
|
||
}
|
||
|
||
txtOutput.AppendText("Сортируем..." + Environment.NewLine);
|
||
|
||
time1 = array1.gnomeSort();
|
||
time2 = array2.shellSort();
|
||
|
||
txtOutput.AppendText("Готово!" + Environment.NewLine);
|
||
|
||
if (size <= 10)
|
||
{
|
||
txtOutput.AppendText("Массив 1 (после гномьей сортировки): " + Environment.NewLine + array1.ToString() + Environment.NewLine);
|
||
txtOutput.AppendText("Массив 2 (после сортировки шелла): " + Environment.NewLine + array2.ToString() + Environment.NewLine);
|
||
}
|
||
|
||
txtOutput.AppendText($"Для сортировки 1 потребовалось {time1}мс" + Environment.NewLine);
|
||
txtOutput.AppendText($"Для сортировки 2 потребовалось {time2}мс" + Environment.NewLine);
|
||
}
|
||
}
|
||
}
|