Разработка программы решения задачи на языке C#
Создание приложения по выбору варианта заполнения прямоугольной матрицы: случайными числами или из текстового файла. Идентификаторы метода "main". Расчет количества столбцов, содержащих хотя бы один нулевой элемент. Инструкция по работе с программой.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.10.2014 |
Размер файла | 563,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
КУРСОВАЯ РАБОТА
на тему: Разработка программы решения задачи на языке 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] -- математический объект, записываемый в виде прямоугольной таблицы элементов кольца или поля, которая представляет собой совокупность строк и столбцов, на пересечении которых находятся её элементы. Количество строк и столбцов матрицы задают размер матрицы. Хотя исторически рассматривались, например, треугольные матрицы, в настоящее время говорят исключительно о матрицах прямоугольной формы, так как они являются наиболее удобными и общими.
РАЗДЕЛ 3. АЛГОРИТМИЗАЦИЯ ЗАДАЧИ
Пользователю предоставляется выбор как будет заполнятся прямоугольная матрица, а именно: случайными числами или из текстового файла.
При заполнении матрицы случайными числами вводится с клавиатуры размер двумерного массива, а именно: количество строк (n) и количество столбцов (m), и заполняем массив случайными числами, в диапазоне от 0 до 10. Исходная матрица выводится в текстовый файл.
Так же матрица может заполняться числами взятыми из текстового файла.
Исходный массив отправляем в метод «numberOfColumnsWithZeroElement» для поиска столбцов с нулевым элементом. В методе инициализируется две переменных «Count» и «result». «Count» - для подсчёта нулевых элементов в столбце, а «result» - для подсчёта столбцов, содержащих хоть один нулевой элемент. В цикле проверяются все столбцы, а во внутреннем цикле проверяются элементы столбца. Если проверяемый элемент равен ну0лю, то счётчик «Count» увеличивается на единицу. Если в столбце есть хоть один нулевой элемент, то счётчик столбцов с нулевым элементом увеличивается на единицу. При переходе на новый столбец счётчик «Count» сбрасывается на ноль. После проверки всех столбцов, результат выполнения метода (количество столбцов содержащих нулевой элемент) возвращается в основную программу и выводится в текстовый файл.
В основном методе инициализируются две переменные: «maxEqual» и «row», для записи максимальной последовательности одинаковых элементов и для запоминания строки с этой последовательностью, соответственно. Вызывается метод «numberOfLineSameElement».
В методе проверяется все строки. Во внутреннем цикле проверяются все элементы строки. Если нашли равные элементы, то считаем последовательность. если элементы не равны, то считаем новую последовательность, если полученная последовательность больше найденной, то сохраняем новый результат. если в строке найдена новая последовательность, и она больше последовательностей в других строках, то сохраняем новое значение наибольшей последовательности и запоминаем строку.
После этого возвращаемся в основной метод для вывода результатов в текстовый файл.
РАЗДЕЛ 4 ИДЕНТИФИКАТОРЫ ПРОГРАММЫ
Таблица 1 - Идентификаторы метода «main»
Обозначения параметров |
Смысл параметров |
||
В формулах |
В программе |
||
mass [n*m] |
Двумерный массив размерностью n*m. |
||
n |
количество строк |
||
m |
количество столбцов |
||
rand |
Переменная для случайных чисел |
||
i |
Индекс строки |
||
g |
Индекс столбца |
||
maxEqual |
Переменная для записи максимальной последовательности |
||
row |
Переменная для запоминания строки |
||
a |
Переменная текстового потока |
||
b |
Пустая переменная |
РАЗДЕЛ 5. СХЕМЫ АЛГОРИТМОВ
Метод «Main»
Рисунок 1- Метод «Main»
Метод «numberOfColumnsWithZeroElement»
Рисунок 2 - Метод «numberOfColumnsWithZeroElement»
Метод «numberOfLineSameElement»
Рисунок 3- Метод «numberOfLineSameElement»
Метод «randomlyfillingmatrix»
Рисунок 4 - Метод «randomlyfillingmatrix»
Метод «izfail»
Рисунок 5 - Метод «izfail»
РАЗДЕЛ 6. ТЕКСТ ПРОГРАММЫ
Листинг 1 метод «Main» [1]
Console.WriteLine("Выберите способ заполнения матрицы: ");
Console.WriteLine("1-случайными числами");
Console.WriteLine("2-из файла");
int b = int.Parse(Console.ReadLine());
StreamWriter a = new StreamWriter(@"E:\rezultat.txt");
if (b == 1)
{
Console.WriteLine("введите кол-во строк");
int n = int.Parse(Console.ReadLine());
Console.WriteLine("введите кол-во столбцов");
int m = int.Parse(Console.ReadLine());
int[,] mass = randomlyfillingmatrix(n, m);
a.WriteLine("количество столбцов, содержащих нулевой элемент {0}", numberOfColumnsWithZeroElement(mass));
int maxEqual = 0;
int row = -1;
numberOfLineSameElement(mass, ref row, ref maxEqual);
if (row > 0)
a.WriteLine("Найдена наибольшая серия из {0} элементов в строке № {1}", maxEqual, row);
else a.WriteLine("Серий одинаковых элементов в строках не найдено");
}
if (b == 2)
{
const string doc = @"E:\matrixfile.txt";
int[,] mass = izfail(doc);
a.WriteLine("количество столбцов, содержащих нулевой элемент {0}", numberOfColumnsWithZeroElement(mass));
int maxEqual = 0;
int row = -1;
numberOfLineSameElement(mass, ref row, ref maxEqual);
if (row > 0)
a.WriteLine("Найдена наибольшая серия из {0} элементов в строке № {1}", maxEqual, row);
else a.WriteLine("Серий одинаковых элементов в строках не найдено");
}
a.Close();
Листинг 2 метод “numberOfColumnsWithZeroElement” [2]
int Count = 0;
int result = 0;
for (int i = 0; i < mass.GetLength(1); i++)
{
for (int j = 0; j < mass.GetLength(0); j++)
{
if (mass[j, i] == 0)
{
Count++;
}
}
if (Count > 0)
result++;
Count = 0;
}
return result;
Листинг 3 метод “numberOfLineSameElement” [3]
for (int i = 0; i < mass.GetLength(0); i++)
{
int tmpEqual = 1, currEqual = 1;
for (int j = 0; j < mass.GetLength(1) - 1; j++)
{
if (mass[i, j] == mass[i, j + 1])
tmpEqual++;
else tmpEqual = 1;
if (tmpEqual > currEqual)
currEqual = tmpEqual;
}
if (currEqual > maxEqual && currEqual > 1)
{
maxEqual = currEqual; row = i + 1;
}
}
Листинг 4 метод «randomlyfillingmatrix» [4]
StreamWriter a = new StreamWriter(@"E:\matrixrandom.txt");
Random rand = new Random();
int[,] mass = new int[m, n];
for (int i = 0; i < mass.GetLength(0); i++)
{
for (int j = 0; j < mass.GetLength(1); j++)
{
mass[i, j] = rand.Next(0, 10);
a.Write("{0} ", mass[i, j]);
}
a.WriteLine();
}
a.Close();
return mass;
Листинг 5 метод «izfail» [5]
int n;
int k;
string[] mass = File.ReadAllLines(doc);
n = Convert.ToInt32(mass[1]);
k = Convert.ToInt32(mass[2]);
int[,] matrix = new int[n, k];
for (int p = 0; p < matrix.GetLength(0); p++)
{
int[] m = mass[p + 3].Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries).Select(s => int.Parse(s)).ToArray();
for (int i = 0; i < m.Length; i++)
{
matrix[p, i] = m[i];
}
}
return 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 с.
Размещено на Allbest.ru
Подобные документы
Создание программы на языке программирования С#, которая проверяет наличие в матрице хотя бы одного столбца, содержащего положительный элемент, поиск его номера. Упорядочивание его элементов по возрастанию. Листинг программы и инструкция по работе с ней.
курсовая работа [1,9 M], добавлен 28.05.2014Разработка структурной диаграммы программного модуля. Представление схемы для основных расчетов выбранного приложения для создания прямоугольной матрицы. Особенности создания пользовательского интерфейса. Тестирование и отладка спроектированного модуля.
курсовая работа [648,4 K], добавлен 27.05.2015Необходимые компоненты и порядок составления текстового редактора. Текст программы решения задачи на языке программирования C++. Контрольный пример работы текстового редактора. Создание и произведение операции форматирования простого документа.
курсовая работа [1,6 M], добавлен 03.09.2011Основные операции над матрицами. Формирование матрицы из файла. Ввод матрицы с клавиатуры. Заполнение матрицы случайными числами. Способы формирования двухмерных массивов в среде программирования С++. Произведение определенных элементов матрицы.
курсовая работа [537,0 K], добавлен 02.06.2015Разработка программы для решения системы линейных уравнений методом Крамера и с помощью расширенной матрицы на языке С++. Описание метода Крамера. Структура программы: заголовочные файлы, типы данных, переменные, идентификаторы, операторы, массивы.
курсовая работа [32,3 K], добавлен 19.01.2009Программа по организации заполнения массива объектов приложения из внешнего файла данных формата csv. Описание модуля Def.h, Plant.h и Main.cpp. Контрольный пример работы программы. Рассмотрение передачи неправильного имени файла в качестве параметра.
курсовая работа [567,9 K], добавлен 27.01.2013Графическое изображение последовательности технологического процесса. Описание метода решения задачи на математическом языке. Общий алгоритм решения задачи и структура программы. Основные понятия сетевых моделей. Разработка программы на языке С++.
курсовая работа [1,3 M], добавлен 23.05.2013Разработка программы на языке С++ для решения дифференциального уравнения Лапласа в прямоугольной области методом сеток. Численное решение задачи Дирихле для уравнения Лапласа, построение сетки и итерационного процесса. Листинг и результат программы.
курсовая работа [307,5 K], добавлен 30.04.2012Создание приложения, предлагающего задать размер линейного массива, заполняет этот массив случайными целыми числами. Разработка приложения, выводящего двумерный массив случайных целых чисел и определяющего минимальный и максимальный элементы в нем.
лабораторная работа [19,0 K], добавлен 15.07.2009Описание общего алгоритма и интерфейса программы. Метод заполнения массива случайными числами. Метод вычисления длины линии между пространственными точками. Создание, синхронизация и завершение потоков. TThread как абстрактный класс, листинг программы.
курсовая работа [664,0 K], добавлен 08.04.2014