Разработка программы решения задачи на языке C#
КУРСОВАЯ
РАБОТА
на
тему: Разработка программы решения задачи на языке C#
по
дисциплине: “Основы конструирования программ”
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ
РАЗДЕЛ
1. ПОСТАНОВКА ЗАДАЧИ
РАЗДЕЛ
2. МАТЕМАТИЧЕСКАЯ ФОРМУЛИРОВКА ЗАДАЧИ
РАЗДЕЛ
3. АЛГОРИТМИЗАЦИЯ ЗАДАЧИ
РАЗДЕЛ
4 ИДЕНТИФИКАТОРЫ ПРОГРАММЫ
РАЗДЕЛ
5. СХЕМЫ АЛГОРИТМОВ
Метод
«Main»
Метод
«numberOfColumnsWithZeroElement»
Метод
«numberOfLineSameElement»
Метод
«randomlyfillingmatrix»
Метод
«izfail»
РАЗДЕЛ
6. ТЕКСТ ПРОГРАММЫ
Листинг
1 метод «Main» [1]
Листинг
2 метод “numberOfColumnsWithZeroElement” [2
Листинг
3 метод “numberOfLineSameElement” [3]
Листинг
4 метод «randomlyfillingmatrix» [4]
Листинг
5 метод «izfail» [5]
РАЗДЕЛ
7. РЕЗУЛЬТАТЫ ВЫПОЛНЕНИЯ ПРОГРАММЫ
РАЗДЕЛ
8. АНАЛИЗ РЕЗУЛЬТАТОВ
РАЗДЕЛ
9. инструкция по работе с программой
ЗАКЛЮЧЕНИЕ
СПИСОК
ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
приложение
матрица идентификатор программа
ВВЕДЕНИЕ
В настоящее время наука и техника развиваются
настолько быстро, что своевременное обобщение потока информации без применения
кибернетических средств представляет значительную трудность.
Цель данной работы - раскрыть суть и возможности
алгоритмизации и программирования, сформировать понимание - какими средствами и
методами создаются программы.
В проекте стандарта и обязательном минимуме по
програмированию содержание алгоритмической линии определяется через следующий
перечень понятий: алгоритм, свойства алгоритмов, исполнители алгоритмов,
система команд исполнителя; формальное исполнение алгоритмов; основные
алгоритмические конструкции; вспомогательные алгоритмы.
РАЗДЕЛ 1. ПОСТАНОВКА ЗАДАЧИ
В данной программе пользователю предоставляется
выбор как будет заполнятся матрица: при вводе цифры «1» матрица будет
заполнятся случайными числами, а при вводе цифры «2» матрица будет выводится из
файла.
В первом случае с клавиатуры
вводится количество строк и столбцов. На основе этих данных в методе «Метод
«randomlyfillingmatrix»» создается целочисленная прямоугольная матрица которая
заполняется случайными числами, возвращается в основной метод и выводится в
текстовый файл. Далее вызывается метод “Метод «numberOfColumnsWithZeroElement»
”. В методе проверяется: если в столбце есть хотя бы один нулевой элемент, то
счётчик столбцов с нулевыми элементами увеличивается на единицу. Метод возвращает
в основную программу, этот счетчик и выводит данные в текстовый файл.
После этого вызывается следующий
метод - “Метод «numberOfLineSameElement»”, в котором осуществляется поиск
строки, в которой находится самая длинная серия одинаковых элементов. А именно,
если находит одинаковый элементы, то считает одну последовательность, если
элементы не равны, то считаем новую последовательность, если полученная
последовательность больше найденной, то сохраняем новый результат. если в
строке найдена новая последовательность, и она больше последовательностей в
других строках сохраняем новое значение наибольшей последовательности и
запоминаем строку. После этого осуществляется возврат результата в основной
метод и вывод результата в текстовый файл.
Во втором случае матрица заполняется
из текстового файла и проходит ту же процедуру что и в первом случае.
РАЗДЕЛ 2. МАТЕМАТИЧЕСКАЯ
ФОРМУЛИРОВКА ЗАДАЧИ
Двумерный массив - это одномерный
массив, элементами которого являются одномерные массивы. Другими словами, это
набор однотипных данных, имеющий общее имя, доступ к элементам которого
осуществляется по двум индексам. Наглядно двумерный массив удобно представлять
в виде таблицы, в которой n строк и m столбцов, а под ячейкой таблицы, стоящей
в i-й строке и j-м столбце понимают некоторый элемент массива a[i][j].
|
[6]
|
Матрица[22] - математический
объект
<#"869125.files/image002.gif">
mass
[n*m]
|
Двумерный
массив размерностью n*m.
|
|
n
|
количество
строк
|
|
m
|
количество
столбцов
|
|
rand
|
Переменная
для случайных чисел
|
|
i
|
Индекс
строки
|
|
g
|
Индекс
столбца
|
|
maxEqual
|
Переменная
для записи максимальной последовательности
|
|
row
|
Переменная
для запоминания строки
|
|
a
|
Переменная
текстового потока
|
|
b
|
Пустая
переменная
|
РАЗДЕЛ 5. СХЕМЫ АЛГОРИТМОВ
Метод «Main»
Рисунок 1- Метод
«Ma <file:///C:\Users\hahol_000\Downloads\MatrixHorizont.nsd>in»
Метод
«numberOfColumnsWithZeroElement»
Рисунок 2 - Метод
«numberOfColumnsWithZeroElement»
Метод «numberOfLineSameElement»
Метод
«randomlyfillingmatrix»
Рисунок 4 - Метод
<file:///C:\Users\hahol_000\Downloads\Main.nsd> «randomlyfillingmatrix»
Метод «izfail»
Рисунок 5 - Метод
<file:///C:\Users\hahol_000\Downloads\Main.nsd> «izfail»
РАЗДЕЛ 6. ТЕКСТ ПРОГРАММЫ
Листинг 1 метод «Main» [1].WriteLine("Выберите
способ заполнения матрицы: ");.WriteLine("1-случайными
числами");.WriteLine("2-из файла");
int b =
int.Parse(Console.ReadLine());a = new
StreamWriter(@"E:\rezultat.txt");
if (b == 1)
{.WriteLine("введите кол-во
строк");
int n =
int.Parse(Console.ReadLine());
Console.WriteLine("введите
кол-во столбцов");
int m =
int.Parse(Console.ReadLine());[,] mass = randomlyfillingmatrix(n,
m);.WriteLine("количество столбцов,
содержащих нулевой элемент
{0}", numberOfColumnsWithZeroElement(mass));maxEqual = 0;row = -1;(mass,
ref row, ref maxEqual);(row > 0).WriteLine("Найдена наибольшая серия из
{0} элементов в строке
№ {1}", maxEqual, row);
else a.WriteLine("Серий
одинаковых элементов в строках не найдено");
}(b == 2)
{string doc
= @"E:\matrixfile.txt";[,] mass = izfail(doc);.WriteLine("количество столбцов,
содержащих нулевой элемент
{0}", numberOfColumnsWithZeroElement(mass));maxEqual = 0;row = -1;(mass,
ref row, ref maxEqual);(row > 0).WriteLine("Найдена наибольшая серия из
{0} элементов в строке
№ {1}", maxEqual, row);
else a.WriteLine("Серий одинаковых
элементов в строках не найдено");
}.Close();
Листинг 2 метод
“numberOfColumnsWithZeroElement” [2]Count = 0;result = 0;(int i = 0; i
< mass.GetLength(1); i++)
{(int j = 0;
j < mass.GetLength(0); j++)
{(mass[j, i]
== 0)
{++;
}
}(Count >
0)++;= 0;
}result;
Листинг 3 метод
“numberOfLineSameElement” [3](int i = 0; i < mass.GetLength(0); i++)
{tmpEqual =
1, currEqual = 1;(int j = 0; j < mass.GetLength(1) - 1; j++)
{(mass[i, j]
== mass[i, j + 1])++;tmpEqual = 1;(tmpEqual > currEqual)= tmpEqual;
}(currEqual
> maxEqual && currEqual > 1)
{=
currEqual; row = i + 1;
}
}
Листинг 4 метод
«randomlyfillingmatrix» [4]a = new
StreamWriter(@"E:\matrixrandom.txt");rand = new Random();[,] mass =
new int[m, n];(int i = 0; i < mass.GetLength(0); i++)
{(int j = 0;
j < mass.GetLength(1); j++)
{[i, j] =
rand.Next(0, 10);.Write("{0} ", mass[i, j]);
}.WriteLine();
}.Close();mass;
Листинг 5 метод
«izfail» [5]n;k;[] mass = File.ReadAllLines(doc);=
Convert.ToInt32(mass[1]);= Convert.ToInt32(mass[2]);[,] matrix = new int[n,
k];(int p = 0; p < matrix.GetLength(0); p++)
{[] m =
mass[p + 3].Split(new char[] { '\t' },
StringSplitOptions.RemoveEmptyEntries).Select(s =>
int.Parse(s)).ToArray();(int i = 0; i < m.Length; i++)
{[p, i] =
m[i];
}
}matrix;
РАЗДЕЛ 7. РЕЗУЛЬТАТЫ ВЫПОЛНЕНИЯ
ПРОГРАММЫ
На рисунке (6) видно что
пользователю предоставляется выбор заполнения прямоугольной матрицы и
применение первого способа заполнения матрицы.
Рисунок 6 - Заполнение матрицы 1
На рисунке (7) изображено случайное
заполнение матрицы в текстовый файл.
Рисунок 7 - Вывод массива 1
На рисунке (8) изображен результат
выведенный в текстовый файл.
Рисунок 8 - результат 1
На рисунке (9) видно, что
пользователю предоставляется выбор заполнения прямоугольной матрицы и
применение второго способа заполнения матрицы.
Рисунок 9 - Заполнение матрицы 2
На рисунке (10) изображен текстовый
файл с исходной матрицей
Рисунок 10 - Исходная матрица
На рисунке [11] изображен
результат для второго способа введения матрицы выведенный в текстовый файл.
Рисунок 11 - Результат 2
РАЗДЕЛ 8. АНАЛИЗ РЕЗУЛЬТАТОВ
В разделе №7(результаты выполненной
программы) мы наглядно видим на рисунках что все условия выполняются. Программа
разработана коректно и очень проста в использовании. Был представлен выбор
заполнения матрицы. Было найдено количество столбцов, содержащих хотя бы один
нулевой элемент и номер строки, в которой находится самая длинная серия
одинаковых элементов. Были некоторые трудности при решении поставленной задачи,
но при помощи различных источников информации они были успешно решены.
Программа не сложна в использовании. При помощи этой работы я рассмотрел язык
программирования С# и его классификацию. Рассмотрел систему программирования, а
также методы программирования.
РАЗДЕЛ 9. ИНСТРУКЦИЯ ПО РАБОТЕ С
ПРОГРАММОЙ
Запуск программы не составит труда.
При запуске программы на экране появится консольное окно которое предоставит
вам выбор заполнения матрицы. Вы выбираете нужный вам пункт.
При выборе [1.1] первого
пункта, вам представится возможность ввести размерность матрицы, после чего
можно будет увидеть результат[1.2] и исходную матрицу[1.3] в
текстовых файлах.
При выборе второго [2.1]
пункта, из текстового файла [2.2] считается матрица и результат
выведется в текстовый файл [2.3].
ЗАКЛЮЧЕНИЕ
Готовая программа удовлетворяет всем
поставленным условиям задачи, и исправно работает. Сразу же после введения
последнего элемента, программа выведет результаты решения с пояснениями и саму
матрицу, для того, чтобы пользователь мог наблюдать, откуда взялись такие
результаты.
Данная задача показывает лишь малую
часть возможных операций с матрицами. Хранение информации в виде двумерного
массива очень удобно. В связи с этим, программы такого типа очень хорошо
подходят для практического применения - расчётов, связанных с матрицами, где от
пользователя требуется ввести только исходные данные. Ввод исходных данных и
вывод результатов решения производится в консольном окне.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
К.
Гленн Системное администрирование в школе, вузе, офисе. - М.: СОЛОН-ПРЕСС,
2008. - (Серия «Элективный курс. Профильное обучение»).
Н.
В. Максимов, И. И. Попов Компьютерные сети: учебное пособие для студентов учреждений
среднего профессионального образования. - М.: Форум, 2011.
В.
Олифер, Н. Олифер Основы компьютерных сетей. - СПб.: ПИТЕР, 2009. - (Серия
«Учебное пособие»).
Введение
в Телекоммуникационные технологии / Под ред. В.И. Журавлева. - М., 2010. - 239 с.