Приложение для решения задачи сетевого планирования
Разработка программы для характеристики взаиморасположения элементов матрицы. Строгая математическая постановка задачи, описание метода и алгоритм решения. Структура разработанного приложения. Распечатка форм и таблиц значений свойств, результаты решения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 10.06.2014 |
Размер файла | 578,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение
профессионального образования
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Социально-экономический факультет
Кафедра «Информационные системы в экономике»
Приложение для решения задачи
сетевого планирования
Пояснительная записки
Курсовая работа по дисциплине «Информатика и программирование»
ТПЖА. 045333. 120 ПЗ
Разработал студент гр. 04 - ПИЭ - 503 / Гурдина Л. В. /
Руководитель, доцент /Нестерова Л.Н./
Проект защищен с оценкой « » « » 2006 г.
Члены комиссии / /
Киров 2006
СОДЕРЖАНИЕ
Введение
Постановка задачи
Строгая математическая постановка
Описание метода и алгоритм решения
Структура приложения
Распечатка форм и таблиц значений свойств
Результаты решения
Заключение
Список использованной литературы
ВВЕДЕНИЕ
Задание 8
на курсовую работу
по дисциплине «Информатика и программирование»
Гурдиной Л.В. (учебный шифр 04 - ПИЭ - 503)
Тема: Создать приложение, выполняющее следующую задачу:
Соседями элемента с индексами i, j некоторой матрицы называются такие элементы этой матрицы, соответствующие индексы которых отличаются от i и j не более, чем на единицу. Разработать приложение, составляющую для данной целочисленной матрицы А размера m матрицу В размера m из нулей и единиц, элемент которой равен единице, когда среди соседей элемента матрицы А есть не менее двух элементов, совпадающих с заданным числом. программа матрица математический приложение
Руководитель курсовой работы доцент кафедры ИСЭ Л.А. Нестерова
19 октября 2005 г.
ПОСТАНОВКА ЗАДАЧИ
Круг пользователей программы - достаточно узкий, программа предназначена для характеристики взаиморасположения элементов матрицы и может пригодиться специалистам по различному анализу (ситуационный, операционный и др. анализ). Так же основа программы подходит для создания игры «Минное поле».Интерфейс создан с расчетом на пользователя, знакомого с работой Windows. Выводимые подсказки, надписи и недоступность объектов, когда они не задействованы, должны упростить работу с программой и исключить возможность ошибок (неверный ввод, запуск расчета до ввода начальных данных и пр.)
СТРОГАЯ МАТЕМАТИЧЕСКАЯ ПОСТАНОВКА
Для решения поставленной задачи используем простой перебор соседних элементов матрицы с подсчетом количества элементов, удовлетворяющих условию (счетчик, предварительно обнуленный, увеличивается на единицу, когда сравниваемый элемент равен заданному). При наборе счетчиком величины большей либо равной двум, соответствующий элемент результирующей матрицы указываем, как единицу, в противном случае - как ноль.
ОПИСАНИЕ МЕТОДА И АЛГОРИТМ РЕШЕНИЯ
Вводятся данные задачи в компьютер (из файла, с клавиатуры, автовводом), затем вводится заданное число, после чего с помощью разработанного метода ведется просмотр матрицы и формируется результат, выводящийся на форму приложения.
В пользовательском интерфейсе применим меню. Для ввода размера массива по строкам и столбцам используем два текстовых окна и соответствующие им объектные процедуры. Заданное число будем вводить в окно InputBox. Предусмотрим запись и считывание матрицы в файл. Элементы массива будем выводить в MSFlexGrid.
Предусмотрим выполнение следующих операций:
- ввод исходного массива пользователем с клавиатуры, случайным образом и из файла;
- запись исходного массива в файл;
- повторный запуск приложения;
- выполнение задач.
Структуру разработаем в соответствии с этими операциями. В приложении предусмотрим использование процедур общего назначения для ввода элементов массива, записи массива в файл и считывание массива из файла, вывода массива в объект MSFlexGrid, инициализации элементов результирующей матрицы. Поместим их в программный модуль Module1. В приложении будут использоваться динамические массивы. Для вводимых массивов, заданных и искомых величин предусмотрим заголовки и необходимые сообщения.
СТРУКТУРА ПРИЛОЖЕНИЯ
РАСПЕЧАТКА ФОРМ И ТАБЛИЦ ЗНАЧЕНИЙ СВОЙСТВ
Список объектов и их свойств
Объект |
Name |
Caption |
|
Command 1 |
BtnExit |
Exit |
|
Label1 |
Lblm |
Введите количество строк |
|
Label2 |
Lbln |
Введите количество столбцов |
|
Label3 |
lblIM |
Исходный массив |
|
Label4 |
lblRM |
Результирующий массив |
|
Label5 |
lblInfo |
||
Label6 |
lblInfo1 |
||
Text1 |
txtm |
||
Text2 |
txtn |
||
MSFlexGrid1 |
Gr1 |
||
MSFlexGrid1 |
Gr2 |
||
Меню |
mnuPrg |
Программа |
|
mnuStart |
Запуск |
||
mnuPStart |
Повторный запуск |
||
mnuExit |
Выход |
||
mnuFile |
Файл |
||
mnuZfile |
Запись массива в файл |
||
mnuRfil |
Редактирование данных в файле |
||
mnuVvod |
Ввод массива |
||
mnuOfil |
Из файла |
||
mnuKlav |
С клавиатуры |
||
mnuRand |
Автоввод |
||
mnuRech |
Решение |
||
CommonDialog1 |
Cdlg |
Таблица переменных
Переменная |
Идентификатор |
Тип |
|
Исходный массив |
a() |
Integer |
|
Результирующий массив |
b() |
Integer |
|
Количество строк |
m |
Integer |
|
Количество столбцов |
n |
Integer |
|
Размер матрицы, записанной в файл |
cf,rf |
Integer |
|
Переменные цикла |
i,j, ii, jj |
Byte |
|
Вспомогательные переменные |
az, t, k |
Integer |
|
Счетчик |
d |
Integer |
|
Сообщения |
massage |
String |
|
Верхняя и нижняя граница случайных чисел |
mm, nn |
Integer |
|
· Программные коды frmMatrix
Option Explicit
Private a() As Single, b() As Single, fname As String
Private m As Integer, n As Integer
Rem: процедура загрузки формы, подготовка к работе.
Private Sub Form_Load()
mnuFile.Visible = False
mnuVvod.Visible = False
mnuTask.Visible = False
mnuPStart.Visible = False
Label1.Visible = False
Label2.Visible = False
End Sub
Rem: процедура вывода формы About
Private Sub mnuInfo_Click()
frmAbout.Show
End Sub
Rem: Запуск приложения выбором меню "Запуск".
Private Sub mnuStart_Click()
Label1.Visible = True
Label1.Caption = "Введите количество строк"
Label2.Visible = True
Label2.Caption = "Введите количество столбцов"
txtm.Text = ""
txtn.Text = ""
txtm.SetFocus
mnuVvod.Visible = False
mnuTask.Visible = False
mnuPStart.Visible = True
mnuStart.Visible = False
End Sub
Rem: Процедура ввода количества строк матрицы.
Private Sub txtm_KeyPress(KeyAscii As Integer)
m = Val(txtm.Text)
If KeyAscii = 13 Then txtn.SetFocus
End Sub
Rem: Процедура ввода количества столбцов матрицы.
Private Sub txtn_KeyPress(KeyAscii As Integer)
n = Val(txtn.Text)
If KeyAscii = 13 Then
If m <> 0 And n <> 0 And m <> 1 And n <> 1 Then
ReDim a(1 To m, 1 To n)
mnuVvod.Visible = True
Label1.Caption = "Количество строк"
Label2.Caption = "Количество столбцов"
Else
MsgBox ("Повторите ввод размера массива")
txtm.Text = ""
txtn.Text = ""
txtm.SetFocus
Exit Sub
End If
End If
End Sub
Rem: Процедура ввода элементов матрицы с клавиатуры.
Private Sub mnuKlav_Click()
mnuKlav.Checked = True
mnuRand.Checked = False
mnuOfile.Checked = False
Call Klav(a(), m, n)
mnuFile.Visible = True
mnuRech.Visible = True
Call fgrid(a(), m, n, Gr1)
End Sub
Rem: Процедура ввода элементов матрицы случайным образом.
Public Sub mnuRand_Click()
Dim nn As Integer, mm As Integer
mnuRand.Checked = True
mnuKlav.Checked = False
mnuOfile.Checked = False
nn = Val(InputBox("Введите нижнюю границу"))
mm = Val(InputBox("Введите верхнюю границу"))
Call Rand(a(), m, n, nn, mm)
mnuFile.Visible = True
mnuTask.Visible = True
Call fgrid(a(), m, n, Gr1)
End Sub
Rem: Процедура редактирования элементов матрицы в файле.
Private Sub mnuRfile_Click()
Dim i As Byte, j As Byte
Open fname For Input As #1
For i = 1 To m
For j = 1 To n
Input #1, a(i, j)
a(i, j) = Val(InputBox("Элемент" & Str(i) & "-й строки" & Str(j) & "-го столбца", "Редактирование элементов", Str(a(i, j))))
Next j
Next i
Close #1
Call fgrid(a(), m, n, Gr1)
End Sub
Rem: Процедура повторного запуска программы на выполнение.
Private Sub mnuPstart_Click()
Call mnuStart_Click
Gr1.Clear
Gr2.Clear
End Sub
Rem: Процедура выхда из приложения.
Private Sub mnuExit_Click()
End
End Sub
Private Sub btnExit_Click()
End
End Sub
Rem: Процедуры решения Задачи.
Private Sub mnuTask_Click()
ReDim b(1 To m, 1 To n)
Call Inic(b(), m, n, a())
Call Task(b())
Call fgrid(b(), m, n, Gr2)
End Sub
Public Sub Task(arr() As Single)
Dim i As Byte, j As Byte, ii As Byte, jj As Byte, d As Integer, az As Integer
Dim nn, mm As Integer
az = Val(InputBox("Введите любое число в пределах от " & Str(nn) & " до " & Str(mm), "Ввод Числа"))
For i = 1 To m
For j = 1 To n
d = 0
For ii = i - 1 To i + 1
For jj = j - 1 To j + 1
If i = ii And j = jj Then GoTo 1
If ii < 1 Or ii > m Or jj < 1 Or jj > n Then GoTo 1
If az = a(ii, jj) Then d = d + 1
1 Next jj
Next ii
If d >= 2 Then
arr(i, j) = 1
Else
arr(i, j) = 0
End If
Next j
Next i
massage = "Заданное число " & az
lblInfo1.Caption = massage
End Sub
Rem: Процедура ввода элементов матрицы из файла.
Private Sub mnuOfile_Click()
Dim i As Byte, j As Byte
mnuOfile.Checked = True
mnuKlav.Checked = False
mnuRand.Checked = False
Call NameFile(fname, CDlg, False)
Open fname For Input As #1
For i = 1 To m
For j = 1 To n
Input #1, a(i, j)
Next j
Next i
Close #1
mnuFile.Visible = True
mnuTask.Visible = True
Call fgrid(a(), m, n, Gr1)
End Sub
Rem: Процедура записи элементов матрицы в файл.
Private Sub mnuZfile_Click()
Dim i As Byte, j As Byte
Call NameFile(fname, CDlg, True)
Open fname For Output As #1
For i = 1 To m
For j = 1 To n
Print #1, Tab((j - 1) * 6); a(i, j)
Next j
Next i
Close #1
End Sub
Rem: Процедура выхода из приложения
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Уверены?", vbYesNo, "Выход?") = vbYes Then
Unload Me
Set frmMatrix = Nothing
Else
Cancel = 1
End If
End Sub
· Программные коды Module 1
Rem: Процедура ввода элементов случайным образом
Public Sub Rand(arr() As Single, km As Integer, kn As Integer, nn As Integer, mm As Integer)
Dim massage As String
Dim i As Byte, j As Byte
Randomize
For i = 1 To km
For j = 1 To kn
arr(i, j) = Int((mm - nn) * Rnd + nn)
Next j
Next i
massage = "Введена матрица с диапазоном чисел от " & nn & " до " & mm
frmMatrix.lblInfo.Caption = massage
End Sub
Rem: Процедура ввода элементов матрицы с клавиатеры
Public Sub Klav(arr() As Single, km As Integer, kn As Integer)
Dim i As Byte, j As Byte
For i = 1 To km
For j = 1 To kn
arr(i, j) = Val(InputBox("Введите элемент" & Str(i) & "-й строки" & Str(j) & "-ого столбца", "Ввод элементов исходного массива"))
Next j
Next i
End Sub
Rem: Процедура вывода элементов матрицы в MSFlexGrid
Public Sub fgrid(arr() As Single, km As Integer, kn As Integer, g As MSFlexGrid)
Dim i As Byte, j As Byte
frmMatrix.Gr1.Width = g.ColWidth(i) * kn
frmMatrix.Gr1.Height = g.RowHeight(i) * km + 100
frmMatrix.Gr2.Width = g.ColWidth(i) * kn
frmMatrix.Gr2.Height = g.RowHeight(i) * km + 100
g.Cols = kn
g.Rows = km
For j = 0 To kn - 1
g.ColWidth(j) = 300
g.ColAlignment(j) = 1
Next j
For i = 0 To km - 1
g.Row = i
For j = 0 To kn - 1
g.Col = j
g.Text = Format(arr(i + 1, j + 1), "0.#")
Next j
Next i
End Sub
Rem: Процедура инициализации элементов результирующей матрицы
Public Sub Inic(arr() As Single, km As Integer, kn As Integer, a() As Single)
Dim i As Byte, j As Byte
For i = 1 To km
For j = 1 To kn
arr(i, j) = a(i, j)
Next j
Next i
End Sub
Public Sub NameFile(f As String, a As CommonDialog, k As Boolean)
On Error GoTo Line1
a.FileName = f
a.Filter = "Все файлы(*.*)|*.*|Текстовые(*.txt)|*.txt|""(*.dat)|*.dat"
a.FilterIndex = 3
If k = True Then
a.ShowSave
Else
a.ShowOpen
End If
f = a.FileName
Exit Sub
Line1:
End Sub
Программные коды frmAbout
Private Sub cmdOK_Click()
Unload Me
End Sub
РЕЗУЛЬТАТЫ РЕШЕНИЯ
frmMatrix
frmAbout
ЗАКЛЮЧЕНИЕ
Разработанная программа удовлетворяет всем требованиям, поставленным заданием для курсовой работы. После запуска приложения на экран выводиться окно формы. Через меню ПРОГРАММА-ЗАПУСК активируются окна, в которые необходимо ввести размерность будущего массива. После ввода размера становиться доступным меню ВВОД МАССИВА. Массив можно вести с клавиатуры, случайным образом (указав нижнюю и верхнюю границу) и из ранее сохраненного файла. Воод исходного массива активизируем меню ФАЙЛ, в котором можно выбрать сохранение матрицы в файл и ее редактирование. Меню ИНФОРМАЦИЯ дает описательную характеристику программы и справочно автора.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
Нестерова Л.А. Основы алгоритмизации и языки программирования.
Конспект лекций. Часть 1. Киров, 1998.
Нестерова Л.А. Основы алгоритмизации и языки программирования.
Конспект лекций. Часть 2. Киров, 1998.
Шатрова Л.Н. Вычислительные методы. Методические указания к лабораторным и практическим занятиям. Киров, 2001
Голованов А.А. Разработка программ в среде Турбо Бейсик. Учебное пособие. Киров, 1996.
Браун С. Visual Basic 5 с самого начала. С.-Петербург-М., ПИТЕР. 1998.
Размещено на Allbest.ru
...Подобные документы
Графическое изображение последовательности технологического процесса. Описание метода решения задачи на математическом языке. Общий алгоритм решения задачи и структура программы. Основные понятия сетевых моделей. Разработка программы на языке С++.
курсовая работа [1,3 M], добавлен 23.05.2013Разработана программа решения двух задач на языке программирования Turbo Pascal. Спецификация задания. Описание входных и выходных данных. Математическая постановка задачи. Алгоритм ее решения. Описание и блок-схема программы. Результаты тестирования.
курсовая работа [275,8 K], добавлен 28.06.2008Содержательная и формальная (математическая) постановка задачи. Разработка алгоритма решения задачи. Структуры программы и алгоритмы программных модулей, их описание. Решение задачи на конкретном примере. Разработка системы тестов и отладка программы.
курсовая работа [882,1 K], добавлен 24.11.2014Описание алгоритма решения транспортной задачи по планированию перевозки зерна. Ход решения задачи вручную, в программе TORA методом наименьшего элемента, с помощью MS Excel. Разработка программы для решения задачи в общем виде средствами Delphi.
курсовая работа [2,5 M], добавлен 22.11.2012Алгоритм решения задачи: расположение значений ветора в порядке возрастания методом "Всплывающих пузырьков". Блок-схема алгоритма решения задачи. Описание блок-схемы, распечатка программы. Операторы: rem, dim, print, input, lprint using, for-next.
курсовая работа [17,4 K], добавлен 27.02.2010Обзор методов и подходов решения поставленной задачи аппроксимации логического вывода экспертной системы. Разработка и описание метода сетевого оператора для решения данной задачи. Разработка алгоритма решения. Проведение вычислительного эксперимента.
дипломная работа [1,5 M], добавлен 23.02.2015Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.
курсовая работа [446,0 K], добавлен 19.06.2014Математическая постановка задачи для алгоритмизации, рекуррентная зависимость. Алгоритм решения задачи, блок-схема программы. Тестовые данные для тестирования программы. Результаты, соответствующие для первых вводимых данных и листинг программы.
контрольная работа [27,0 K], добавлен 09.05.2012Определение наиболее выгодного соотношения сортов сырой нефти, используемой для производства бензина. Математическая постановка задачи. Выбор метода решения задачи. Описание алгоритма решения задачи (симплекс-метода) и вычислительного эксперимента.
курсовая работа [1,1 M], добавлен 08.12.2010Определение зависимости скорости вала двигателя от времени. Математическая модель решения задачи. Решение задачи Коши на интервале методом Эйлера и Рунге-Кутта четвертого порядка точности. Алгоритм решения задачи. Текст программы и результаты ее работы.
контрольная работа [108,9 K], добавлен 08.03.2013Описание решения задачи, ее постановка, общий подход к решению. Представление исходных данных, условий задачи и целей ее решения. Составление алгоритма решения поставленной задачи. Написание программного обеспечения и тестирование конечного продукта.
курсовая работа [1,1 M], добавлен 03.07.2011Анализ входной информации необходимой для решения задачи. Разработка исходных данных контрольного примера создания базы данных. Описание технологии и алгоритмов решения задачи и их математических реализаций. Разработка диалогов приложения пользователя.
курсовая работа [1,3 M], добавлен 26.04.2015Сущность линейного программирования. Математическая формулировка задачи ЛП и алгоритм ее решения с помощью симплекс-метода. Разработка программы для планирования производства с целью обеспечения максимальной прибыли: блок-схема, листинг, результаты.
курсовая работа [88,9 K], добавлен 11.02.2011Решение задачи средствами Паскаль и блок-схемы выполненных процедур, составление программы. Результаты решения задачи по перевозке грузов. выполнение задачи средствами MS Excel, создание таблиц. Порядок и особенности решения задачи в среде MathCAD.
курсовая работа [2,5 M], добавлен 27.02.2011Математическая постановка задачи. Алгоритм решения системы обыкновенных дифференциальных уравнений методом Эйлера. Параметры программы, ее логическая структура и функциональное назначение. Анализ входных и выходных данных. Описание тестовых задач.
курсовая работа [38,0 K], добавлен 26.04.2011Разработка алгоритма решения задачи численного интегрирования методом трапеции. Словесное описание и блок-схема разработанного алгоритма программы. Описание интерфейса, главного окна и основных форм программы. Проверка работоспособности программы.
курсовая работа [1,4 M], добавлен 16.03.2012Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Описание алгоритма решения задачи графическим способом. Ввод элементов исходного массива в цикле. Нахождение определённых элементов. Сортировка элементов с помощью пузырькового метода. Разработка программы на языке Pascal. Поиск наибольшего элемента.
лабораторная работа [123,5 K], добавлен 15.01.2014Си - это язык программирования общего назначения. Постановка задачи: разработка программы - калькулятора. Метод решения задачи. Алгоритм работы программы. Технические данные для использования. Описание основных функций.
курсовая работа [14,1 K], добавлен 23.05.2002Создание приложения по выбору варианта заполнения прямоугольной матрицы: случайными числами или из текстового файла. Идентификаторы метода "main". Расчет количества столбцов, содержащих хотя бы один нулевой элемент. Инструкция по работе с программой.
курсовая работа [563,8 K], добавлен 28.10.2014