Главная страница

Курсовая работа Дорох. Разработка приложений на языке высокого уровня


Скачать 2.67 Mb.
НазваниеРазработка приложений на языке высокого уровня
АнкорКурсовая работа Дорох
Дата01.08.2022
Размер2.67 Mb.
Формат файлаdocx
Имя файлаКурсовая работа Дорох.docx
ТипКурсовая
#638745
страница3 из 3
1   2   3

Заключение


В процессе выполнения курсовой работы были решены и описаны две задачи, требующие знаний в различных областях дисциплины программирования: нахождения из множества четырехзначных чисел только тех, которые соответствуют условию, и вывод их на экран в виде гистограммы с помощью интерфейса программирования Windows Forms, а также создания и заполнения двумерных массивов и работы с ними, в том числе используя методы.

Очень ценными в процессе выполнения курсовой работы также оказались знания элементов математической логики и линейной алгебры, умения работать с источниками информации и документацией.

Были развиты такие важные для программиста качества, как усидчивость и упорство.

Список использованных источников




  1. Малыхина М.П., Частикова В.А. Программирование на языке высокого уровня C#: учеб. пособие. Кубан. гос. технол. ун-т. Краснодар: Изд. КубГТУ, 2011. 244 с.

  2. Павловская Т.А. C#. Программирование на языке высокого уровня: учебник для вузов. СПб.: Питер, 2007. 432 с.

  3. Фаронов В.В. Создание приложений с помощью C#. Руководство программиста. М.: Эксмо, 2008. 576 с.

  4. Герберт Шилдт. Полный справочник по С#. Издательский дом «Вильямс», 2004. 752 с.

  5. Методические указания по выполнению курсовой работы для студентов очной формы обучения направления 10.03.01 Информационная безопасность. Профиль – Организация и технология защиты информации. / Сост.: М.П. Малыхина; Кубан. гос. технол. ун-т. Каф. компьютерных технологий и информационной безопасности. – Краснодар: Изд. КубГТУ, 2019. – 28 с.

  6. Руководство по программированию на 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;

}

}

}

}

1   2   3


написать администратору сайта