Курсовая работа Дорох. Разработка приложений на языке высокого уровня
Скачать 2.67 Mb.
|
ЗаключениеВ процессе выполнения курсовой работы были решены и описаны две задачи, требующие знаний в различных областях дисциплины программирования: нахождения из множества четырехзначных чисел только тех, которые соответствуют условию, и вывод их на экран в виде гистограммы с помощью интерфейса программирования Windows Forms, а также создания и заполнения двумерных массивов и работы с ними, в том числе используя методы. Очень ценными в процессе выполнения курсовой работы также оказались знания элементов математической логики и линейной алгебры, умения работать с источниками информации и документацией. Были развиты такие важные для программиста качества, как усидчивость и упорство. Список использованных источниковМалыхина М.П., Частикова В.А. Программирование на языке высокого уровня C#: учеб. пособие. Кубан. гос. технол. ун-т. Краснодар: Изд. КубГТУ, 2011. 244 с. Павловская Т.А. C#. Программирование на языке высокого уровня: учебник для вузов. СПб.: Питер, 2007. 432 с. Фаронов В.В. Создание приложений с помощью C#. Руководство программиста. М.: Эксмо, 2008. 576 с. Герберт Шилдт. Полный справочник по С#. Издательский дом «Вильямс», 2004. 752 с. Методические указания по выполнению курсовой работы для студентов очной формы обучения направления 10.03.01 Информационная безопасность. Профиль – Организация и технология защиты информации. / Сост.: М.П. Малыхина; Кубан. гос. технол. ун-т. Каф. компьютерных технологий и информационной безопасности. – Краснодар: Изд. КубГТУ, 2019. – 28 с. Руководство по программированию на C#, Microsoft Corporation [Электронный ресурс]. ПриложениеЛистинг представленных программ: Программы к задаче №1: Программа с гистограммой: namespace WindowsFormsApp2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int n1 = 1000; int n2 = 10000; int[] a = new int[Convert.ToString(n1).Length]; //Создаем битовую матрицу Bitmap bitmap = new Bitmap(ClientSize.Width, ClientSize.Height); //Создаем объект класса Graphics на основе битовой матрицы Graphics graph = Graphics.FromImage(bitmap); //Рисуем линию на поверхности, Graphics использует в качестве битовой матрицы Console.WriteLine("Натуральные числа:"); for (int i = n1; i < n2; i++) // Цикл, перебирающий числа от 1000 до 9999 { int N = i; for (int k = 0; k < Convert.ToString(n1).Length; k++) { a[k] = N % 10; N = N / 10; } if (CheckNumbers(n1, a) == true) graph.DrawLine(new Pen(Color.Red, 1), i / 10, ClientSize.Height, i / 10, ClientSize.Height - i / 17); } graph.DrawLine(new Pen(Color.Black, 4), 1100, ClientSize.Height, 1100, ClientSize.Height - 10000 / 17); for (int i = 1; i <= 10; i++) { graph.DrawLine(new Pen(Color.Black, 1), 1075, ClientSize.Height - i * (1000 / 17), 1125, ClientSize.Height - i * (1000 / 17)); graph.DrawString(Convert.ToString(i * 1000), new Font("Times New Roman", 12), new SolidBrush(Color.Black), 1150 , ClientSize.Height - i * (1000 / 17)); } //Присваиваем нарисованное свойству формы BackgroundImage = bitmap; graph.Dispose(); } private Boolean CheckNumbers(int n1, int[] a) { for (int i = 0; i < Convert.ToString(n1).Length; i++) { for (int j = i + 1; j < Convert.ToString(n1).Length; j++) if (a[i] == a[j]) return false; } return true;}}} Программа с текстовым выводом: namespace cursach2 { class Program { static void Main(string[] args) { Console.WriteLine("Натуральные числа:"); int n1 = 1000; int n2 = 10000; int[] a = new int[Convert.ToString(n1).Length]; for (int i = n1; i < n2; i++) // Цикл, перебирающий числа { int N = i; for (int k = 0; k < Convert.ToString(n1).Length; k++) { a[k] = N % 10; N = N / 10; } if (CheckNumbers(n1, a) == true) Console.Write(i + " "); } } public static Boolean CheckNumbers(int n1, int[] a) { for (int i = 0; i < Convert.ToString(n1).Length; i++) { for (int j = i + 1; j < Convert.ToString(n1).Length; j++) if (a[i] == a[j]) return false; } return true; } } } Программа к задаче №2: using System; namespace Cursovaya2 { class Program { static void Main(string[] args) { int m=0, n=0; Console.WriteLine("Введите кол-во строк m"); m = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Введите кол-во столбцов n"); n = Convert.ToInt32(Console.ReadLine()); if (m < 1 || n < 1) Console.WriteLine("Матрица не может иметь такую размерность"); else { int[,] A = new int[m, n]; int[,] B = new int[m, n]; int[,] C = new int[m, n]; int[,] D = new int[m, n]; int[,] E = new int[m, n]; Console.WriteLine("Ввод матрицы A"); Vvod(A, m, n); Console.WriteLine("Ввод матрицы B"); Vvod(B, m, n); Console.WriteLine("Ввод матрицы C"); Vvod(C, m, n); Console.WriteLine("Ввод матрицы D"); Vvod(D, m, n); Console.WriteLine("Матрица A"); Vivod(A, m, n); Console.WriteLine("Матрица B"); Vivod(B, m, n); Console.WriteLine("Матрица C"); Vivod(C, m, n); Console.WriteLine("Матрица D"); Vivod(D, m, n); Console.WriteLine("Новая матрица"); for (int i = 0; i < m; ++i) // Вывод новой матрицы { for (int j = 0; j < n; ++j) { if (A[i, j] == B[i, j] && A[i, j] == C[i, j] && A[i, j] == D[i, j] && B[i, j] == C[i, j] && B[i, j] == D[i, j] && C[i, j] == D[i, j]) // Если элементы на одинаковых позициях всех матриц равны E[i, j] = A[i, j]; // Записываем его в новую матрицу else E[i, j] = 0; // Иначе обнуляем Console.Write(" " + E[i, j]); } Console.WriteLine(); } if (m == n) // Определитель вычисляем только для квадратной матрицы { int det = Determinant(E); Console.WriteLine("Определитель новой матрицы равен " + det); } else Console.WriteLine("Определитель не определён, так как матрица не квадратная"); // Иначе выводим сообщение об ошибке } } private static int Determinant(int[,] E) // Метод для вычисления определителя { if (E.Length == 4) // Определитель для матрицы 2 на 2 { return E[0, 0] * E[1, 1] - E[0, 1] * E[1, 0]; } int sign = 1, result = 0; for (int i = 0; i < E.GetLength(1); i++) // Определитель для размерности больше 2 на 2 через миноры { int[,] minor = GetMinor(E, i); // Вызов метода для получения минора result += sign * E[0, i] * Determinant(minor); // Вычисление определителя через минор по формуле (рекурсия метода) sign = -sign; // Смена знака для алгебраического дополнения } return result; } private static int[,] GetMinor(int[,] E, int n) // Метод для получения минора { int[,] result = new int[E.GetLength(0) - 1, E.GetLength(0) - 1]; // Создание матрицы минора размерностью [m-1;n-1] for (int i = 1; i < E.GetLength(0); i++) { for (int j = 0, col = 0; j < E.GetLength(1); j++) { if (j == n) continue; // Пропуск линии пересечения result[i - 1, col] = E[i, j]; // Получаем элементы минорной матрицы из исходной матрицы col++; } } return result; } static void Vivod(int[,] F, int m, int n) // Метод для вывода матриц на экран { for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { Console.Write(" " + F[i, j]); } Console.WriteLine(); } } static void Vvod(int[,] F, int m, int n) // Метод для ввода матриц с клавиатуры { int s = 0; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) { s = 0; Console.Write("[" + (i + 1) + "," + (j + 1) + "]= "); try { s = Convert.ToInt32(Console.ReadLine()); } catch { Console.WriteLine("Неправильный формат числа! Присвоим этому элементу значение 0"); } F[i, j] = s; } } } } |