Вы находитесь на странице: 1из 23

Реферат

Пояснительная записка к курсовой работе содержит: 25 с., 10 рис., 4


источника, 1 приложение.
VISUAL STUDIO 2022, C#, ПРОГРАММА, МАССИВЫ, МЕТОДЫ.
Целью работы является решение типовых задач основных разделов
программирования с использованием полученных знаний в данной среде
Объектом исследования являются алгоритмы обработки одномерных и
двумерных массивов.
Предметом исследования являются массивы в языке С#.
Задачи исследования:
1. Заполнение массива.
2. Сортировка массива.
3. Поиск конкретных элементов в массиве.
4. Вывод массива.

3
Содержание

Введение ................................................................................................................... 5
1 Нормативные ссылки ........................................................................................... 6
2 Одномерные массивы .......................................................................................... 7
2.1 Краткие сведения .......................................................................................... 7
2.2 Постановка задач ........................................................................................... 8
2.3 Математические решения............................................................................. 8
2.4 Блок-схемы алгоритмов ................................................................................ 9
2.5 Программная реализация ........................................................................... 12
2.6 Скриншоты выполнения программ ........................................................... 15
3 Двумерные массивы ........................................................................................... 16
3.1 Краткие сведения ........................................................................................ 16
3.2 Постановка задач ......................................................................................... 17
3.3 Математические решения........................................................................... 17
3.4 Блох-схемы алгоритмов .............................................................................. 18
3.5 Программная реализация ........................................................................... 20
3.6 Скриншоты выполнения программ ........................................................... 22
Заключение ............................................................................................................ 23
Список использованных источников .................................................................. 24
Приложение А – Проверка на оригинальность .................................................. 25

4
Введение

Данный документ представляет собой пояснительную записку к


курсовой работе по программированию на тему «Решение типовых задач
основных разделов программирования».
Цель работы заключается в использовании полученных знаний для
решения типовых задач основных разделов программирования.
Предметом исследования являются одномерные и двумерные массивы
в языке C#, которые являются одной из важнейших структур
программирования.
Как объект исследования рассматриваются алгоритмы работы с
одномерными и двумерными массивами.
Задачами же являются основные действия с массивами, а именно ввод
элементов, сортировка, поиск конкретных элементов и вывод, что позволит
лучше понять принципы взаимодействия с набором элементов.
Работа содержит нормативные ссылки на ГОСТы, которые были
использованы при составлении данной работы, а также краткое описание
определенных структур языка C#, поставленные задачи согласно варианту,
решение поставленных задач в виде программного кода и скриншоты
результатов.

5
1 Нормативные ссылки

В данной пояснительной записке использованы ссылки на следующие


стандарты:
–ГОСТ 2.105-95 ЕСКД. Общие требования к текстовым документам;
–ГОСТ Р.7.0.5-2008 СИБИД. Библиографическая ссылка. Общие
требования и правила составления;
–ГОСТ 7.12-93 СИБИД. Библиографическая запись. Сокращение слов
на русском языке. Общие требования и правила.

6
2 Одномерные массивы

2.1 Краткие сведения

Одномерный массив в языке программирования C# представляет собой


набор элементов одного типа, расположенных в последовательности. Каждый
элемент в массиве имеет свой индекс, который указывает на его положение в
массиве. Индексация в массиве начинается с 0. Элементы массива имеют одно
и то же имя, но различаются своим индексом, который указывается в
квадратных скобках.
Одномерный массив в C# создается с помощью ключевого слова "new"
и указания типа данных элементов массива, например:
int[] имя = new тип [ размерность ]
Массив может быть инициализирован при объявлении сразу же:
int[] имя = new тип [] { список_инициализаторов }
Для доступа к элементам массива используется их индекс, например:
int Number = numbers[0]; // переменной Number присвоено значение
первого элемента массива
Для изменения значений элементов массива также используется их
индекс:
numbers[0] = 10; // изменение значения первого элемента массива
Одномерные массивы в C# можно использовать для хранения,
обработки и передачи данных в программе. Они представляют собой удобную
структуру данных для работы с большим количеством элементов одного типа.

7
2.2 Постановка задач

Задание 1. Дан одномерный массив целых чисел А(n). Вывести только


те элементы массива, которые являются одновременно двухразрядными и
отрицательными числами. Вывести элементы, которые меньше половины
максимального элемента массива.
Задание 2. Дан одномерный массив целых чисел. Отсортировать
четные элементы массива по возрастанию, не изменяя порядка расположения
элементов.

2.3 Математические решения

Решение задания 1: в случайно сгенерированном массиве заданной


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

8
2.4 Блок-схемы алгоритмов

На рисунке 2.1 представлена блок-схема программы задания 1:

Рисунок 2.1 – блок-схема решения первого задания

9
На рисунке 2.2 показана первая часть блок-схемы программы задания 2:

Рисунок 2.2 – первая часть блок схемы решения второго задания

10
На рисунке 2.3 показана вторая часть блок-схемы программы задания 2:

Рисунок 2.3 – вторая часть блок схемы решения второго задания

11
2.5 Программная реализация

Код программы задания 1:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _1._1
{
internal class Program
{
static void Main(string[] args)
{
Console.Write("Введите размерность массива: ");
int n = Convert.ToInt32(Console.ReadLine());
int[] A = new int[n];
int max = A[0];
Random random = new Random();
Console.Write("Массив целых чисел:");
for (int i = 0; i < n; i++)
{
A[i] = random.Next(-100, 100);
Console.Write(A[i] + " ");
}
// Находим максимальный элемент массива
for (int i = 1; i < n; i++)
{
if (A[i] > max)
{
max = A[i];
}
}
// Выводим элементы, которые являются одновременно
двухразрядными и отрицательными числами
Console.WriteLine("\nЭлементы, которые являются
одновременно двухразрядными и отрицательными числами:");
foreach (int num in A)
{
if (num < -9 && num > -100)
{
Console.Write(num + " ");
}
}
// Выводим элементы, которые меньше половины
максимального элемента массива

12
Console.WriteLine("\nЭлементы, которые меньше
половины максимального элемента массива:");
foreach (int num in A)
{
if (num < max / 2)
{
Console.Write(num + " ");
}
}
Console.ReadKey();
}
}
}

Код программы задания 2:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _1._2
{
internal class Program
{
static void Main(string[] args)
{
Console.Write("Введите размерность массива: ");
int q = Convert.ToInt32(Console.ReadLine());
int[] massive = new int[q];
Random random = new Random();
Console.WriteLine("Массив:");
for (int i = 0; i < q; i++)
{
massive[i] = random.Next(-100, 100);
Console.Write(" " + massive[i]);
}
// Находим количество четных элементов в массиве
int count = 0;
foreach (int num in massive)
{
if (num % 2 == 0)
{
count++;
}
}
//Временный массив для четных элементов
int[] evenMassive = new int[count];

13
int index = 0;
foreach (int num in massive)
{
if (num % 2 == 0)
{
evenMassive[index] = num;
index++;
}
}
// Сортируем временный массив четных элементов
методом пузырька
for (int i = 0; i < evenMassive.Length; i++)
{
for (int j = i + 1; j < evenMassive.Length; j++)
{
if (evenMassive[i] > evenMassive[j])
{
int temp = evenMassive[i];
evenMassive[i] = evenMassive[j];
evenMassive[j] = temp;
}
}
}
// Перезаписываем отсортированные четные элементы
обратно в исходный массив
index = 0;
for (int i = 0; i < q; i++)
{
if (massive[i] % 2 == 0)
{
massive[i] = evenMassive[index];
index++;
}
}
// Выводим отсортированный массив
Console.WriteLine("\nОтсортированный массив с
отсортированными четными элементами:");
foreach (int num in massive)
{
Console.Write(num + " ");
}
Console.ReadKey();
}
}
}

14
2.6 Скриншоты выполнения программ

На рисунке 2.4 показан скриншот результатов выполнения программы


задания 1:

Рисунок 2.4 – Результат выполнения программы задания 1

На рисунке 2.5 показан скриншот результатов выполнения программы


задания 2:

Рисунок 2.5 – Результат выполнения программы задания 2

Как видно из результатов работы, написанный код работает корректно.


В соответствии с заданиями, результатом первого алгоритма является вывод
определенных элементов, результатом второго – сортировка элементов.

15
3 Двумерные массивы

3.1 Краткие сведения

Двумерный массив в языке программирования C# представляет собой


набор элементов, организованных в виде таблицы с определенным
количеством строк и столбцов. Каждый элемент в двумерном массиве имеет
два индекса - один для строки и один для столбца.
Двумерный массив в C# создается так же как и одномерный, но в
квадратных скобках указывается два значения: количество строк и количество
столбцов. Примеры инициализации:
int[,] matrix = new int[3, 3]; // создание двумерного массива 3x3
элементов типа int
Массив также может быть инициализирован при объявлении:
int[,] matrix = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
Для доступа к элементам двумерного массива используются их два
индекса:
int element = matrix[0, 0]; // доступ к элементу массива в первой строке
и первом столбце
Двумерные массивы также могут быть использованы для
представления матриц и других связанных между собой данных. Они обычно
используются для работы с данными, которые можно организовать в виде
таблицы или сетки.
Двумерные массивы предоставляют удобный способ хранения и
манипуляции данными, организованными в более сложные структуры, чем
одномерные массивы.

16
Как правило, при решении задач с двумерными массивами
используется два вложенных друг в друга цикла for, которые перебирают
значения массива: внешний цикл перебирает строки, внутренний – столбцы.

3.2 Постановка задач

Задание 1. Дан двумерный целочисленный массив А(n,m),


просматриваемый через окно 3x3. Определить число окон, в которых
элементы главной диагонали являются нечетными.
Задание 2. Заполнить матрицу заданного размера M(k, l) числами 1, 2,
3, 4 так, чтобы по горизонтали, вертикали и диагонали не было одинаковых
рядом стоящих чисел.

3.3 Математические решения

Решение задания 1: В случайно сгенерированном двумерном массиве


заданной величины происходит перебор элементов с помощью двух циклов
for, внутри которых происходит проверка массива с помощью окна три на три,
начиная с левого верхнего угла. При обнаружении такого окна, где все
элементы главной диагонали являются нечетными счетчик увеличивается на
один. В конце алгоритма выводится сообщение с подсчитанным количеством
окон, удовлетворяющих условию.
Решение задания 2: Двумерный массив заданной величины заполняется
числами от одного до четырех так, что рядом нет одинаковых стоящих чисел
с помощью метода, в котором с помощью условия проверяется четность
индекса строки: если индекс четный, то возвращается увеличенный на один
остаток от деления индекса столбца на четыре, иначе – увеличенный на один
остаток от деления, увеличенного на два индекса столбца на четыре.

17
3.4 Блох-схемы алгоритмов

На рисунке 3.1 представлена блок-схема программы задания 1:

Рисунок 3.1 – блок-схема решения первого задания

18
На рисунке 3.2 представлена блок-схема метода GetElement программы
задания 2:

Рисунок 3.2 – блок-схема метода GetElement


На рисунке 3.3 представлена блок-схема метода Main программы
задания 2:

Рисунок 3.3 – блок-схема решения второго задания

19
3.5 Программная реализация

Код программы задания 1:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите размерность матрицы");
Console.Write("Число строк = ");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("Число столбцов = ");
int t = Convert.ToInt32(Console.ReadLine());
int count = 0;
int[,] A = new int[n, t];
Random random = new Random();
Console.WriteLine("Массив:");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < t; j++)
{
A[i, j] = random.Next(-100,100);
Console.Write(" " + A[i, j]);
}
Console.WriteLine();
}
for (int i = 0; i < n - 2; i++)
{
for (int j = 0; j < t - 2; j++)
{
if (A[i, j] % 2 != 0 && A[i + 1, j + 1] % 2
!= 0 && A[i + 2, j + 2] % 2 != 0)
{
count++;
}
}
}
Console.WriteLine("Число окон, в которых все
элементы главной диагонали являются нечетными: " + count);
Console.ReadKey();
}

20
}
}

Код программы задания 2:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _2._2
{
internal class Program
{
static void Main(string[] args)
{
Console.Write("Количество строк матрицы = ");
int k = Convert.ToInt32(Console.ReadLine());
Console.Write("Количество столбцов матрицы = ");
int l = Convert.ToInt32(Console.ReadLine());
int[,] M = new int[k, l];
for (int i = 0; i < k; i++)
{
for (int j = 0; j < l; j++)
{
M[i, j] = GetElement(i, j);
}
}
for (int i = 0; i < k; i++)
{
for (int j = 0; j < l; j++)
{
Console.Write(M[i, j] + " ");
}
Console.WriteLine();
}
Console.ReadKey();
}
static int GetElement(int i, int j)
{
if (i % 2 == 1)
return j % 4 + 1;
else
return (j + 2) % 4 + 1;
}

}
}

21
3.6 Скриншоты выполнения программ

На рисунке 3.4 показан скриншот результатов выполнения программы


задания 1:

Рисунок 3.4 – Результат выполнения программы задания 1


На рисунке 3.5 показан скриншот результатов выполнения программы
задания 1:

Рисунок 3.5 – Результат выполнения программы задания 2


Как видно из результатов работы, написанные программы работают
корректно и, в соответствии с поставленными заданиями, результатом работы
алгоритма первого задания является подсчет количества окон 3x3, в которых
все элементы являются нечетными, а результатом алгоритма второго задания
– заполнение матрицы заданного размера цифрами от 1 до 4 так, что рядом с
произвольным элементом нет такого же элемента.

22
Заключение

В результате данной курсовой работы было решено несколько типовых


задач разделов программирования на языке C#.
Поставленная в начале работы цель была достигнута.
Также были исследованы некоторые алгоритмы работы с одномерными
и двумерными массивами.
В соответствии с поставленными в начале работы задачами, было
изучены несколько новых принципов работы с двумерными массивами.
В ходе данной работы были восполнены некоторые пробелы в знаниях
о массивах и получены новые методы решения некоторых задач.

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

1. Павловская Т.А. C#. Программирование на языке высокого


уровня: Учебник для вузов. ‒ СПб.: Питер, 2014. ‒ 432 с.: ил.
2. Фленов М. Е. Ф71 Библия С#. -3- е изд., перераб. и доп. - СПб.:
БХВ-Петербург, 2016 - 544 с.: ил.
3. Троелсен Эндрю, Джепикс Филипп Язык программирования C# 7
и платформы .NET и .NET Core, 8-е изд.: Пер. с англ. ‒ СПб.: ООО
«Диалектика», 2018 ‒ 1328 с.: ил.
4. Албахари Джозеф C# 9.0. Справочник. Полное описание языка.:
Пер. с англ. - СПб.: ООО “Диалектика” 2021 - 1056 с.: ил.

24
Приложение А – Проверка на оригинальность

Рисунок А.1 – проверка на оригинальность на сайте antiplagiat.ru

25

Вам также может понравиться