Программа для обнаружения средств нападения и отражения возможной воздушной агрессии на город

Структурная диаграмма программной системы. Разработка подпрограмм и методов объектов. Лист регистрации изменений. Используемые технические средства. Назначение программы: помощь в обнаружении противника для отражения возможной воздушной агрессии на город.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 15.08.2012
Размер файла 131,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

Человечество всегда возлагало большие надежды на технику и технологию. Свидетельством этого служит высказывание известного писателя И. Ильфа: «В фантастических романах главное это было радио. При нем ожидалось счастье человечества. Вот радио есть, а счастья нет.» Но, несмотря на то, что счастья радио не принесло, техника и технология, несомненно, являются важнейшими понятиями как для отдельного человека, так и человечества в целом. С середины прошлого века большие надежды возлагались на кибернетику, информатику, вычислительную технику, развитие и расширение областей применения вычислительных машин.

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

В середине 50-х гг. XX века человечество вступило в совершенно новую эпоху. Буквально на глазах ранее неизвестные технологии входили в повседневную жизнь, а привычные средства информации приобретали абсолютно новые формы. Еще не так давно газеты и книги набирались в типографиях с помощью металлических литер, с набранного текста отливались специальные формы, и после нанесения на них краски делался оттиск на бумаге. Теперь значительную часть работы взяли на себя компьютеры. Они дали возможность существенно увеличить скорость распространения информации.

История появления и развития вычислительной техники начинается со времени использования человеком окружающих предметов или меток для счета.

В настоящее время индустрия производства компьютеров и программного обеспечения для них стремительно развивается. Компьютеры начинают использоваться практически везде: в науке, в искусстве, в медицине, в образовательном процессе и т.д.

Однако, несмотря на огромное многообразие сфер человеческой деятельности, в которых находят применение компьютеры, главной областью их использования была есть и будет оборона, военное дело. Недаром в основном война и выдвигаемые ею требования являются главным двигателем прогресса в развитии новых технологий. В пример можно привести тот факт, что попытка создания автоматического вычислительного устройства была предпринята еще в первой половине XIX века английским математиком Чарльзом Бэббиджем. Но из-за низкого уровня развития техники в то время ему не удалось воплотить свою идею. Показательно, что годом создания машины, работающей на электромеханическом реле, является 1941 год. Она была построена немецким инженером Конрадом Цузе, который переоткрыл идеи Беббиджа. В 1943 году Говард Айкен независимо от Конрада Цузе с помощью работ Бэббиджа построил на одном из предприятий фирмы IBM аналогичную машину «Марк-1». Далее последовало построение машины, работающей на электронных лампах, что увеличило скорость работы машины в тысячу раз, создание машины, которая могла бы хранить в своей памяти исполняемую программу. В 1945 году математик Джон фон Нейман разработал основные принципы функционирования универсальных вычислительных машин. Ни для кого не секрет, что именно в эти годы шла вторая мировая война. Военная промышленность и оборона - важнейшие составляющие в жизни любой страны. Думаю, то, что резкий скачок в развитии вычислительной техники пришелся как раз на годы войны, не просто совпадение… Скорее, это лишь подтверждает, что укрепление обороноспособности страны, ее военная мощь неразрывно связаны с усовершенствованием существующих технологий и разработкой новых.

Я считаю, что оборона по значимости является вторым после образования направлением в политике любой страны. Именно поэтому в качестве темы своей курсовой работы я взяла защиту объекта (в конкретном случае - города) от воздушного нападения.

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

1. Постановка задачи и область применения

Для своевременного отражения возможной воздушной агрессии на город необходимо обнаруживать средства воздушного нападения противника в момент подлета к границе «опасной зоны» - на расстоянии RG от центра города, который примем за начало координат.

Имеются M комплексов ПВО, расположенных на границе города - окружности радиуса R. Координата каждого комплекса ПВО задается углом поворота от нулевого направления вi.

Для каждого комплекса i (1< = i < = M) известен радиус его действия r i

Написать программу, которая

1) определяет, надежно ли защищен город от нападения, т.е. верно ли, что обнаружение происходит при подлете к границе «опасной зоны» с любого направления;

2) в случае отрицательного ответа на первый пункт определяет диапазоны «опасных» направлений, т.е. таких направлений, с которых при подлете обнаружение не происходит. Направление задается двумя углами (в градусах), первый соответствует началу опасной зоны, второй - концу, обход выбирается против часовой стрелки. Начало отсчета - ось Ох.

3) Если есть опасные зоны, определяет, куда надо поместить дополнительные комплексы ПВО, чтобы город был защищен надежно, а также радиусы этих комплексов.

Например, имеем ситуацию, отображенную на рисунке 1, т.е. 3 комплекса ПВО, с координатами в1, в2 и в3 соответственно.

RG = A

r1 = с, b1 = в1

r2 = d, b2 = в2

r3 = e, b3 = в3

Должны определиться две незащищенные зоны:

от л4 до л5 и от л6 до л1,

Должна выдаться информация о двух необходимых дополнительных комплексах.

Данная программа является узко направленной и может использоваться в области обороны (конкретно, противовоздушной обороны) для быстрого определения зон опасности, а так же в других областях с целью определения незащищенных зон границы какого-либо объекта.

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

2. Структурная диаграмма программы

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

3. Разработка подпрограмм

Методы объекта TIshDan

Метод ввода исходных данных

Спецификация

- Назначение метода: метод осуществляет ввод исходных данных.

- Название метода: VvodDan

- Входные данные метода:

NameF - физическое имя файла с исходными данными.

- Выходные данные метода: нет

- Список формальных параметров подпрограммы:

Статус

Имя

Тип

Вид

Входные

NameF

String

Параметр-константа

- Заголовок метода:

Procedure VvodDan(Const NameF:String)

Метод решения

Словесное описание: связываются логическое и физическое имена файла, файл открывается для записи, осуществляются циклы ввода данных, если данные допустимы, происходит запись в файл, затем закрытие файла; файл открывается для чтения, и проверяется, нет ли комплекса ПВО, защищающего весь город.

Формульное описание:

Вход

Связывание имен

Открытие файла

Цикл До

Выполнять

Ввод (М)

(M<0) или (M>1000)= > Вывод (' Недопустимое количество!')

До (M>0) и (M< =1000)

Конец Цикла

Цикл До

Выполнять

Ввод (RG)

RG<1 = > Вывод (' Недопустимый радиус!')

До RG>0

Конец Цикла

V i = 1(1) М:

Цикл До

Выполнять

Ввод (yg,RadPVO)

(yg*Pi/180)> PVO.b

RadPVO > PVO.r

yg>360 = > Вывод (' Недопустимый угол (больше 360)!')

RadPVO<0 = > Вывод (' Недопустимый радиус действия !')

До (yg<360)и(RadPVO>0)

Конец Цикла

Запись в файл

Закрытие файла

Открытие файла

Пока не конец файла:

Чтение (PVO)

PVO.r>=2*RG => Вывод('Город в безопасности!!!')

Выход из программы

Закрытие файла

Выход

Методы объекта TKompl

Метод определения координат пересечения и их характеристик

Спецификация

- Назначение метода: определяются координаты пересечения зон действия каждого из комплексов ПВО с границей города и их характеристики.

- Название метода: RasstanovkaPVO

- Входные данные метода:

NameF - физическое имя файла с исходными данными.

- Выходные данные метода: нет

- Список формальных параметров подпрограммы:

Статус

Имя

Тип

Вид

Входные

NameF

String

Параметр-константа

- Заголовок метода:

Procedure RasstanovkaPVO(Const NameF:String)

Метод решения

Словесное описание: связываются логическое и физическое имена файла, файл открывается для чтения; осуществляется цикл по элементам массива: из файла читается элемент, элементу массива координат пересечения присваивается конкретное значение; закрытие файла.

Формульное описание:

Вход

Связывание имен

Открытие файла

V j = 1(1) М:

Чтение из файла (PVO)

arctan(PVO.r*sqrt(4*RG*RG-PVO.r*PVO.r)/(2*RG*RG-PVO.r*PVO.r))> w

w < 0 => A[2*j-1].l:=PVO.b-w-Pi; A[2*j-1].l

w <> 0 =>

PVO.b - w > A[2*j-1].l

PVO.b + w > A[2*j].l

-1 > A[2*j-1].e

1 > A[2*j].e

2*j-1 > A[2*j-1].nper

2*j > A[2*j].nper

j > A[2*j-1].npvo

j > A[2*j].npvo

Закрытие файла

Выход

Метод сортировки массива координат пересечения

Спецификация

- Назначение метода: метод сортирует массив координат пересечения зон действия комплексов ПВО с границей города по возрастанию значения координаты (угла).

- Название метода: Sortirovka

- Входные данные метода: нет

- Выходные данные метода: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок метода:

Procedure Sortirovka

Метод решения

Словесное описание: Пока в массиве есть хотя бы одна неупорядоченная пара соседних элементов, меняются местами элементы в этой паре. Вводится логическая переменная flag. В начале каждого прохода флаг устанавливается равным False. Если происходит перестановка, флаг принимает значение True и процесс сортировки продолжается. Сохранение флагом значения False от начала до конца текущего прохода означает, что массив уже упорядочен, процесс сортировки заканчивается.

Формульное описание:

Вход

M*2> k

Цикл До

Выполнять

false>flag

V j=1(1)k-1

A[j].l>A[j+1].l =>

A[j] > t

A[j+1] > A[j]

t>A[j+1]

true > flag

До (not flag)или(k=1)

Конец Цикла

Выход

Метод показа массива координат пересечения

Спецификация

- Назначение метода: последовательный вывод на экран элементов массива координат пересечения зон действия комплексов ПВО с границей города.

- Название метода: Pokaz

- Входные данные метода: нет

- Выходные данные метода: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок метода:

Procedure Pokaz

Метод решения

Словесное описание: происходит цикл последовательного вывода на экран всех элементов массива в необходимом формате.

Формульное описание:

Вход

V n=1(1)2*М

Вывод ((A[n].l*180/Pi):10:4, A[n].npvo:10,' ',A[n].nper:12)

Выход

Методы объекта TDanZon

Метод определения опасных зон

Спецификация

- Назначение метода: определяется, есть ли опасные зоны, если есть вычисляются их диапазоны.

- Название метода: OpasnueZonu

- Входные данные метода:

NameF - физическое имя файла с данными об опасных зонах.

- Выходные данные метода: нет

- Список формальных параметров подпрограммы:

Статус

Имя

Тип

Вид

Входные

NameF

String

Параметр-константа

- Заголовок метода:

Procedure OpasnueZonu(Const NameF:String)

Метод решения

Словесное описание: происходит связывание логического и физического имен файла; файл открывается для записи; происходит цикл по элементам отсортированного массива координат пересечений зон действия комплексов ПВО и границы города, в зависимости от характеристик координат определяется наличие опасных зон, эти зоны записываются в файл, далее на экран выводится содержимое файла или сообщение о безопасности.

Формульное описание:

Вход

Связывание имен

Открытие файла

Начальные установки

V j = 1(1) 2 * М:

s+A[j].e > s

(s=0) и (j<>2*M) =>

A[j].l > Dang.fst

A[j+1].l > Dang.scn

t+1 > t

Запись в файл(Dang)

(s=0) и (j=2*M) и (A{ng}[j].l-A[1].l<2*Pi) =>

A[j].l > Dang.fst

A[1].l > Dang.scn

t+1 > t

Запись в файл(Dang)

Закрытие файла

Открытие файла

t=1 => Вывод (' ГОРОД В БЕЗОПАСНОСТИ!!!');

t <> 1

Вывод (' Количество опасных зон ',t-1);

Цикл Пока не конец файла

Выполнять Чтение(Dang)

Вывод(Dang.fst*180/Pi:10:4,'

до',Dang.scn*180/Pi:10:4)

Конец Цикла

Закрытие файла

Выход

Метод определения дополнительных необходимых комплексов

Спецификация

- Назначение метода: определяются координаты и радиусы действия необходимых дополнительных комплексов.

- Название метода: Recom

- Входные данные метода:

NameF2 - физическое имя файла с данными об опасных зонах.

- Выходные данные метода: нет

- Список формальных параметров подпрограммы:

Статус

Имя

Тип

Вид

Входные

NameF2

String

Параметр-константа

- Заголовок метода:

Procedure Recom(Const NameF2:String)

Метод решения

Словесное описание: происходит связывание логического и физического имен файла; файл открывается для чтения; происходит цикл чтения данных из файла; определяются координаты и радиусы действия необходимых дополнительных комплексов и вывод их на экран; закрытие файла.

Формульное описание:

Вход

Связывание имен

Открытие файла

Цикл Пока не конец файла

Выполнять

Чтение из файла(Dang)

Dang.fst+abs(Dang.scn - Dang.fst)/2> t

t-Dang.fst> p

RG*sqrt(2*(1-cos(p))) > c

Вывод (t*(180/Pi):10:4,c:12:3)

Конец Цикла

Закрытие файла

Выход

Методы объекта TFile

Метод показа файла

Спецификация

- Назначение метода: вывод содержимого файла на экран.

- Название метода: ShowF

- Входные данные метода: нет

- Выходные данные метода: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок метода:

Procedure ShowF

Метод решения

Словесное описание: происходит связывание логического и физического имен файла; файл открывается для чтения; происходит цикл чтения данных из файла и вывода их на экран.

Формульное описание:

Вход

Связывание имен

Открытие файла

Цикл Пока не конец файла

Выполнять

Чтение из файла (PVO)

Вывод (PVO.b*180/Pi:10:3,' ',PVO.r:12:3)

Конец Цикла

Закрытие файла

Выход

Методы объекта TLocation

Метод инициализации экземпляра объекта

Спецификация

- Назначение метода: метод инициализирует начальные координаты места.

- Название метода: Init

- Входные данные метода:

initX,initY - координаты места.

- Выходные данные метода: нет

- Список формальных параметров подпрограммы:

Статус

Имя

Тип

Вид

Входные

initX

Integer

Параметр-значение

initY

- Заголовок метода:

Constructor Init(initX,initY:Integer)

Метод решения

Словесное описание: данный метод инициализирует координаты места.

Формульное описание:

Вход

initX > x

initY> y

Выход

Метод деструктор

Спецификация

- Назначение метода: метод является деструктором.

- Название метода: ZakLoc

- Входные данные метода: нет

- Выходные данные метода: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок метода:

Destructor ZakLoc

Метод решения

Словесное описание: является пустым.

Формульное описание:

Вход

Выход

Методы объекта TPoint

Метод рисования точки

Спецификация

- Назначение метода: метод осуществляет рисование точки.

- Название метода: Show

- Входные данные подпрограммы: нет

- Выходные данные подпрограммы: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок подпрограммы: Procedure Show

Метод решения

Словесное описание: данный метод рисует точку по ранее инициализированным координатам.

Формульное описание:

Вход

Рисование точки

Выход

Метод стирания точки

Спецификация

- Назначение метода: метод осуществляет стирание точки (рисует ее цветом фона).

- Название метода: Hide

- Входные данные подпрограммы: нет

- Выходные данные подпрограммы: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок подпрограммы: Procedure Hide

Метод решения

Словесное описание: данный метод стирает точку (рисует точку по данным координатам цветом фона).

Формульное описание:

Вход

Стирание точки

Выход

Метод перемещения точки

Спецификация

- Назначение метода: метод осуществляет перемещение точки по данным координатам.

- Название метода: MoveTo

- Входные данные подпрограммы:

newX, newY - горизонтальная и вертикальная координаты точки

- Выходные данные подпрограммы: нет

- Список формальных параметров метода:

Статус

Имя

Тип

Вид

Входные

newX

Integer

Параметр-значение

newY

- Заголовок подпрограммы: Procedure MoveTo(newX,newY:Integer)

Метод решения

Словесное описание: данный метод перемещает точку (стирает точку, а затем рисует ее на месте с данными координатам).

Формульное описание:

Вход

Стирание точки

newX> x

newY> y

Рисование точки

Выход

Методы объекта TCircle

Метод инициализации окружности

Спецификация

- Назначение метода: метод инициализирует начальные координаты центра окружности и ее радиус.

- Название метода: Init

- Входные данные метода:

initX,initY - координаты центра окружности;

initR - радиус окружности.

- Выходные данные метода: нет

- Список формальных параметров подпрограммы:

Статус

Имя

Тип

Вид

Входные

initX

Integer

Параметр-значение

initY

initR

- Заголовок метода:

Constructor Init(initX,initY,initR:Integer)

Метод решения

Словесное описание: данный метод инициализирует начальные координаты центра окружности и ее радиус.

Формульное описание:

Вход

TPoint.Init(initX,initY)

initR > r

Выход

Метод деструктор

Спецификация

- Назначение метода: метод является деструктором.

- Название метода: ZakCir

- Входные данные метода: нет

- Выходные данные метода: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок метода:

Destructor ZakCir

Метод решения

Словесное описание: является пустым.

Формульное описание:

Вход

Выход

Метод рисования окружности

Спецификация

- Назначение метода: метод осуществляет рисование окружности.

- Название метода: Show

- Входные данные подпрограммы: нет

- Выходные данные подпрограммы: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок подпрограммы: Procedure Show

Метод решения

Словесное описание: данный метод рисует окружность по ранее инициализированным координатам с ранее инициализированным радиусом.

Формульное описание:

Вход

Рисование окружности

Выход

Метод стирания окружности

Спецификация

- Назначение метода: метод осуществляет стирание окружности (рисует ее цветом фона).

- Название метода: Hide

- Входные данные подпрограммы: нет

- Выходные данные подпрограммы: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок подпрограммы: Procedure Hide

Метод решения

Словесное описание: данный метод стирает окружность (рисует окружность по данным координатам с данным радиусом цветом фона).

Формульное описание:

Вход

Текущий основной цвет > color

Установка текущего цвета рисунка

Рисование окружности

Установка color как текущего цвета рисунка

Выход

Метод изменения окружности

Спецификация

- Назначение метода: метод осуществляет рисование окружности по тем же координатам, но другого радиуса.

- Название метода: Bigger

- Входные данные подпрограммы:

newR - новый радиус окружности

- Выходные данные подпрограммы: нет

- Список формальных параметров метода:

Статус

Имя

Тип

Вид

Входные

newR

Integer

Параметр-значение

- Заголовок подпрограммы:

Procedure Bigger(newR:Integer)

Метод решения

Словесное описание: данный метод стирает имеющуюся окружность и рисует новую с другим радиусом.

Формульное описание:

Вход

Стирание окружности

newR > r

Рисование окружности

Выход

Методы объекта TSamolet

Метод рисования самолета

Спецификация

- Назначение метода: метод осуществляет рисование самолета.

- Название метода: Show

- Входные данные подпрограммы: нет

- Выходные данные подпрограммы: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок подпрограммы: Procedure Show

Метод решения

Словесное описание: данный метод рисует самолет по ранее инициализированным опорным координатам.

Формульное описание:

Вход

Нахождение всех координат самолета по опорным координатам

Рисование самолета

Выход

Метод стирания самолета

Спецификация

- Назначение метода: метод осуществляет стирание самолета (рисует его цветом фона).

- Название метода: Hide

- Входные данные подпрограммы: нет

- Выходные данные подпрограммы: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок подпрограммы: Procedure Hide

Метод решения

Словесное описание: данный метод осуществляет стирание самолета (рисует его цветом фона).

Формульное описание:

Вход

Текущий основной цвет > color

Установка текущего цвета рисунка

Рисование самолета

Установка color как текущего цвета рисунка

Выход

Методы объекта TGraphWorld

Метод инициализации графики

Спецификация

- Назначение метода: метод осуществляет инициализацию графики.

- Название метода: InitWorld

- Входные данные подпрограммы:

gd - тип графического драйвера

gm - режим работы графического драйвера

Path - маршрут поиска графического драйвера

- Выходные данные подпрограммы: нет

- Список формальных параметров метода:

Статус

Имя

Тип

Вид

Входные

gd

Integer

Параметр-значение

gm

Path

String

- Заголовок подпрограммы: Procedure InitWorld(gd,gm:Integer;Path:String)

Метод решения

Словесное описание: данный метод инициализирует графический режим .

Формульное описание:

Вход

gd> GraphDriver

gm>GraphMode

инициализация графики

Выход

Метод закрытия графики

Спецификация

- Назначение метода: метод осуществляет закрытие графики.

- Название метода: EndWorld

- Входные данные подпрограммы: нет

- Выходные данные подпрограммы: нет

- Список формальных параметров метода: формальных параметров нет.

- Заголовок подпрограммы: Procedure EndWorld

Метод решения

Словесное описание: данный метод осуществляет закрытие графического режима работы.

Формульное описание:

Вход

Закрытие графики

Выход

Приложение

1. Текст программы

Program PrVozdObGor;

Uses Crt, Graph, GRKYR;

Const MAX_M=1000;

Type

{ Тип "устаноывка ПВО" }

TzapPVO = Record

b:Real; {угол - координата установки }

r:Real; { радиус действия }

End;

{ Тип "координата пересечения" }

TzapAng = Record

l:Real; { угол - координата пересечения зоны действия}

{ комплекса и границы города}

e:-1..1; { признак начала или конца дуги, }

{ части границы города, которую покрывает зона}

{ действия конкретного комплекса ПВО}

nper:Word; { номер пересечения }

npvo:Word; { номер комплекса ПВО}

End;

{ Тип "Опасные зоны" }

TZapDanger = Record

fst:Real; { Координата начала зоны }

scn:Real; { Координата конца зоны }

End; программа воздушный агрессия противник

{ Тип массив координат пересечений }

TMasAng = Array[1..2*MAX_M] Of TzapAng;

{ Тип файл из записей "Комплексы ПВО"}

TFile1=File Of TzapPVO;

{ Тип файл из записей "Опасные зоны"}

TFile2=File Of TZapDanger;

{ Тип объекта "Исходные данные" }

TIshDan=Object

M:Word; { кол-во комплексов ПВО}

RG:Real; { радиус города }

PVO:TZapPVO; { комплекс ПВО}

{ Метод ввода исходных данных }

Procedure VvodDan(Const NameF:String);

End;

{Тип объекта " Пересечения " }

TKompl=Object(TIshDan)

A:TMasAng; { Массив координат пересечений }

{ Метод расчета координат пересечений и создания файла координат}

Procedure RasstanovkaPVO(Const NameF:String);

{ Метод сортировки по возрастанию углов (координат) }

Procedure Sortirovka;

{ Вывода на экран информации о пересечениях }

Procedure Pokaz;

End;

{ Тип объекта "Опасные направления"}

TDanZon=Object(TKompl)

Dang:TZapDanger; { опасное направление (зона) }

{ Метод создания файла опасных зон }

Procedure OpasnueZonu(Const NameF:String);

{ Метод определения дополнительных комплексов}

{ и создания файла данных о них}

Procedure Recom(Const NameF2:String);

End;

{ Тип объекта "Файл" }

TFile =Object

name:String; {имя файла}

{ Метод показа файла }

Procedure ShowF;

End;

{ Описание методов объекта TIshDan }

Procedure TIshDan.VvodDan(Const NameF:String);

Var i:Integer; yg:Real; RadPVO:Real; F:TFile1;

Begin

Assign(F,NameF); {Связывание имен}

Rewrite(F); {Открытие файла}

WriteLn;

WriteLn(' Введите:');

Write(' Количество комплексов ПВО -->');

{Цикл ввода количества комплексов}

Repeat

{$I-,R-}

ReadLn(M);

{$I+,R+}

If(IOResult<>0)Or(M<1)Or(M>1000)

Then

Begin WriteLn(' Недопустимое количество!');

WriteLn(' Нажмите Enter -->');

ReadLn; ReadLn;

GoToXY(1,WhereY-2);

DelLine;

GoToXY(1,WhereY-1);

DelLine;

GoToXY(1,WhereY-1);

DelLine;

End;

Until (M>0)And(M<=1000)And(IOResult=0);

{Цикл ввода радиуса города}

Repeat

Write(' Радиус города в километрах -->');

{$I-,R-}

ReadLn(RG);

{$I+,R+}

If (IOResult<>0)Or(RG<=0)

Then

Begin WriteLn(' Недопустимый радиус!');

WriteLn(' Нажмите Enter -->');

ReadLn; ReadLn;

GoToXY(1,WhereY-2);

DelLine;

GoToXY(1,WhereY-1);

DelLine;

GoToXY(1,WhereY-1);

DelLine;

End;

Until (RG>0)And(IOResult=0);

WriteLn(' Вводите угол в градусах от 0');

WriteLn(' до 360 - координату ПВО ');

WriteLn(' и радиус действия через пробел, ');

WriteLn(' затем Enter -->');

{ Цикл ввода данных о комплексах }

For i:=1 To M

Do Begin

Repeat

{$I-,R-}

ReadLn(yg,RadPVO);

{$I+,R+}

If (IOResult<>0)

Then Begin

WriteLn( 'Недопустимое значение!');

WriteLn(' Нажмите Enter -->');

ReadLn; ReadLn;

GoToXY(1,WhereY-2);

DelLine;

GoToXY(1,WhereY-1);

DelLine;

GoToXY(1,WhereY-1);

DelLine;

End

Else

If (yg>=360) Or (yg<0)

Then Begin

WriteLn( 'Недопустимое значение угла!');

WriteLn(' Нажмите Enter -->');

ReadLn;

GoToXY(1,WhereY-2);

DelLine;

GoToXY(1,WhereY-1);

DelLine;

GoToXY(1,WhereY-1);

DelLine;

End

Else

If RadPVO<=0

Then Begin

WriteLn(' Недопустимый радиус действия!');

WriteLn(' Нажмите Enter -->');

ReadLn;

GoToXY(1,WhereY-2);

DelLine;

GoToXY(1,WhereY-1);

DelLine;

GoToXY(1,WhereY-1);

DelLine;

End;

Until (IOResult=0)And(yg<360)And(RadPVO>0)And (yg>=0);

PVO.b:=(yg*Pi/180);

PVO.r:=RadPVO;

Write(F,PVO); {Запись данных о комплексе в файл}

End;

Close(F); {Закрытие файла}

Reset(F); {Открытие файла}

{Цикл проверки на наличие комплекса ПВО, }

{который бы защищал всю территорию города}

While Not Eof(F)

Do Begin

Read(F,PVO);

If PVO.r>=2*RG{радиус действия комплекса больше диаметра города}

Then Begin

Window(15,15,65,23);

TextBackGround(7);

TextColor(9);

ClrScr; GoToXY(12,3);

WriteLn('Город в безопасности!!!');

WriteLn(' Область действия комплекса ПВО');

WriteLn(' с координатой ', PVO.b*180/Pi:6:3,'

покрывает');

WriteLn(' всю территорию города!!!');

ReadLn;

Halt; {Выход из программы}

End;

End;

Close(F); {Закрытие файла}

End;

{ Описание методов объекта TKompl }

Procedure TKompl.RasstanovkaPVO(Const NameF:String);

Var j:Integer; w:Real; F:TFile1;

Begin

Assign(F,NameF); {Связывание имен}

Reset(F); {Открытие файла}

{ Цикл определения координат пересечения}

For j:=1 To M

Do Begin

Read(F,PVO);

{ Вычмсление вспомогательного угла}

w:=arctan(PVO.r*sqrt(4*RG*RG-PVO.r*PVO.r)/(2*RG*RG-

PVO.r*PVO.r));

{Вычисление координат пересечений}

If w<0

Then

Begin A[2*j-1].l:=PVO.b-w-Pi;

A[2*j].l:=PVO.b +w+Pi;

End

Else

Begin

A[2*j-1].l:=PVO.b - w;

A[2*j].l:=PVO.b + w;

End;

A[2*j-1].e:=-1; {присваивание признака начала дуги}

A[2*j].e:=1; {присваивание признака конца дуги}

A[2*j-1].nper:=2*j-1;

A[2*j].nper:=2*j;

A[2*j-1].npvo:=j;

A[2*j].npvo:=j

End;

Close(F);

End;

Procedure TKompl.Sortirovka;

Var k,j:Integer; flag:Boolean; t:TZapAng;

Begin k:=M*2;

{Цикл сортировки массива координат пересечений по возрастанию}

Repeat

flag:=false;

For j:=1 To k-1

Do

If A[j].l>A[j+1].l

Then Begin

{ Перестановка элементов}

t:=A[j];

A[j]:=A[j+1];

A[j+1]:=t;

flag:=true { Изменение значения флага

перестановки}

End;

k:=k-1;

Until (not flag)Or(k=1)

End;

Procedure TKompl.Pokaz;

Var n:Word;

Begin

WriteLn;

WriteLn(' Координата Номер Номер');

WriteLn(' пересечения ПВО пересечения');

{ Цикл вывода на экран элементов массива координат пересечений}

For n:=1 To 2*M

Do WriteLn((A[n].l*180/Pi):10:4, A[n].npvo:10,' ',A[n].nper:12);

ReadLn;

End;

{ Описание методов объекта TDanZon }

Procedure TDanZon.OpasnueZonu(Const NameF:String);

Var s:Integer; j,k,t:Word; F:TFile2;

Begin

Assign(F,NameF); { Связывание имен }

Rewrite(F); { Открытие файла }

s:=0; t:=0; { Начальные устанговки цикла }

{ Цикл вычисления начальных и конечных координат опасных зон }

For j:=1 To 2*M

Do Begin

s:=s+A[j].e; { текущая сумма признаков начала-конца }

{ Если s=0, т.е. выделена очередная связная область }

If (s=0) And (j<>2*M)

Then Begin

Dang.fst:=A[j].l;{ Начальная координата опасной зоны}

Dang.scn:=A[j+1].l;{Конечная координата опасной зоны}

t:=t+1; {текущее количество опасных зон }

Write(F,Dang);

End;

If (s=0) And (j=2*M) And (A{ng}[j].l-A[1].l<2*Pi)

Then Begin

Dang.fst:=A[j].l;{ Начальная координата опасной зоны}

Dang.scn:=A[1].l; { Конечная координата опасной зоны

t:=t+1; {текущее количество опасных зон }

Write(F,Dang);

End

End;

Close(F); {Закрытие файла}

Reset(F); {Открытие файла}

If t=0 {Если опасных зон нет}

Then Begin

TextBackGround(7);

TextColor(9);

ClrScr;

GoToXY(10,4);

WriteLn(' ГОРОД В БЕЗОПАСНОСТИ!!!');

End

Else Begin

TextBackGround(Red);

TextColor(White);

ClrScr;

WriteLn;

WriteLn(' Количество опасных зон ',t);

{ Цикл вывода информации об опасных зонах }

While Not Eof(F)

Do

Begin

Read(F,Dang);

WriteLn(Dang.fst*180/Pi:10:4,' до ',Dang.scn*180/Pi:10:4)

End;

End;

Close(F); { Закрытие файла }

End;

Procedure TDanZon.Recom(Const NameF2:String);

Var t,c,p:Real;F:TFile2;

Begin

Assign(F,NameF2);

Reset(F);

TextBackGround(9);ClrScr;

WriteLn(' РЕКОМЕНДАЦИИ');

WriteLn('Необходимы дополнительные комплексы ПВО:');

WriteLn('Координата Радиус действия');

{ Цикл вывода на экран рекомендаций по}

{ установке дополнительных комплексов}

While Not Eof(F)

Do

Begin

Read(F,Dang);

t:=Dang.fst+abs(Dang.scn - Dang.fst)/2;

p:=t-Dang.fst; {Вычисление координаты}

c:=RG*sqrt(2*(1-cos(p))); {Вычисление радиуса действия}

WriteLn(t*(180/Pi):10:4,c:12:3);

End;

Close(F);

End;

{ Описание методов объекта TFile }

Procedure TFile.ShowF;

Var PVO:TZapPVO;F:TFile1;

Begin

Assign(F,name); { Связывание имен }

Reset(F); { Открытие файла }

WriteLn;

WriteLn('Содержимое файла "Комплексы ПВО" :');

WriteLn(' Координата Радиус действия');

{ Цикл вывода содержимого файла на экран }

While Not Eof(F)

Do Begin

Read(F,PVO);

WriteLn(PVO.b*180/Pi:10:3,' ',PVO.r:12:3);

End;

Close(F);

End;

Const NameF1='C:\file1.zap';

NameF2='C:\file2.zap';

Var

MV:TDanZon; F:TFile;

i,j:Integer;

{Переменные для работы с графикой}

World:TGraphWorld; { Статический объект "графический мир" }

pt,pt2,pt3:TPCircle; { Ссылки на динамические объекты "окружность" }

n:LongInt;

sam1,sam2, sam3, sam4:TSamolet; { Статические объекты "самолеты"}

Begin

{ ГРАФИКА }

{Инициализация графики}

World.InitWorld(detect,detect,'C:\TP70\BGI');

{Инициализация окружностей}

New(pt,Init(300,trunc(GetMaxY/2)-2,45));

New(pt2,Init(300,trunc(GetMaxY/2)-2,45));

New(pt3,Init(300,trunc(GetMaxY/2)-2,45));

n:=1;

ReadLn;

{Цикл, реализующий "движение" текста, окружноятей}

Repeat

Delay(10000);

SetTextStyle(0,0,5);

SetColor(3);

OutTextXY(45,trunc(GetMaxY/2)-2,'MY TERM PAPER!');

SetTextStyle(3,0,7);

SetColor(0);

OutTextXY(trunc(100*cos(6*(n-1)))+150,(6*(n-1)+2)mod 280+40,'Press Enter!');

SetColor(9);

SetTextStyle(3,0,7);

OutTextXY(trunc(100*cos(6*n))+150,(6*n+2)mod 280+40,'Press Enter!');

SetColor(1);

pt^.MoveTo(trunc(80*cos(6*n))+280,(40+6*n)mod 480);

pt2^.MoveTo(trunc(80*cos(6*n))+280,(40+6*n)mod 480);

pt3^.MoveTo(trunc(80*cos(6*n))+280,(40+6*n)mod 480);

pt^.Bigger((25*n)Mod 450);

pt2^.Bigger((25*n)Mod 300);

pt3^.Bigger((25*n)Mod 150);

n:=n+1

Until KeyPressed;

{Освобождение памяти}

Dispose(pt,ZakCir);

Dispose(pt2,ZakCir);

Dispose(pt3,ZakCir);

ReadLn;

ClearDevice; {Очистка экрана}

{Инициализация самолетов}

sam1.Init(120,120);

sam2.Init(120,120);

sam3.Init(120,120);

sam4.Init(120,120);

{Инициализация окружностей}

New(pt,Init(450,GetMaxY Div 2-140,45));

New(pt2,Init(100,GetMaxY Div 2-100,45));

New(pt3,Init(300,GetMaxY Div 2+150,45));

n:=1;

Repeat

Delay(5700);

SetTextStyle(3,0,6);

OutTextXY(15,trunc(GetMaxY/2)-2,'AIR ATTACK PROTECTION!');

sam1.MoveTo(10*n Mod GetMaxX,GetMaxY Div 2-200);

sam2.MoveTo(14*n Mod GetMaxX,GetMaxY Div 2-100);

sam3.MoveTo(16*n Mod GetMaxX,GetMaxY Div 2+100); SetColor(4);

sam4.MoveTo(12*n Mod GetMaxX,GetMaxY Div 2+200);

pt^.Bigger((10*n)Mod 120);

pt2^.Bigger((12*n)Mod 180);

pt3^.Bigger((20*n)Mod 200);

SetColor(0);

Line(GetMaxX Div 2,GetMaxY Div 2,

GetMaxX Div 2+trunc( GetMaxX Div 2*sin(6*(n-1)*pi/360)),GetMaxY Div 2+trunc(GetMaxY Div 2*cos(6*(n-1)*pi/360)));

SetColor(4);

Line(GetMaxX Div 2,GetMaxY Div 2,

GetMaxX Div 2+trunc( GetMaxX Div 2*sin(6*n*pi/360)),GetMaxY Div 2+trunc(GetMaxY Div 2*cos(6*n*pi/360)));

SetColor(1);

SetTextStyle(3,0,3);

OutTextXY(200,GetMaxY - 40,'Press Enter to continue!');

n:=n+1;

Until KeyPressed;

{Освобождение памяти}

Dispose(pt,ZakCir);

Dispose(pt2,ZakCir);

Dispose(pt3,ZakCir);

sam1.ZakLoc;

sam2.ZakLoc;

sam3.ZakLoc;

sam4.ZakLoc;

ClearDevice; { Очистка экрана }

World.EndWorld; { Закрытие графического режима }

{ О ЗАДАЧЕ }

Window(1,1,80,25) ;

TextBackGround(BLACK);

TextColor(WHITE);

ClrScr;

TextBackGround(5);

TextColor(White);

Window(6,1,72,6);

ClrScr;

{Циклы рисования рамки}

For i:=2 To 66

Do Begin

GoToXY(i,1);

Write('*');

GoToXY(i,6);

Write('*');

End;

For j:=1 To 6

Do Begin

GoToXY(2,j);

Write('*');

GoToXY(66,j);

Write('*');

End;

Window(9,2,69,5);

WriteLn(' Данная программа выполняет проверку безопасности города ');

Write('(надежность защиты от воздушного нападения');

WriteLn(' с учетом радиуса города и характеристик комплексов ПВО).');

{ ОСНОВНАЯ ЗАДАЧА }

Window(3,8,37,23);

TextBackGround(3);

TextColor(WHITE); ClrScr;

{ Ввод исходных данных }

MV.VvodDan(NameF1);

ClrScr;

F.name:=NameF1;

F.ShowF; {Показ файла исходных данных}

{ Определение координат пересечений }

MV.RasstanovkaPVO(NameF1);

Window(40,8,79,23);

ClrScr;

{ Вывод координат пересечений }

MV.Pokaz;

{ Сортировка массива координат пересечений }

MV.Sortirovka;

Window(15,15,65,23);

{ Определение опасных зон и создание файла с данными о них }

MV.OpasnueZonu(NameF2);ReadLn;

{ Рекомендации по установке дополнительных комплексов }

MV.Recom(NameF2);ReadLn;

End.

2. Текст модуля GRKYR

UNIT GRKYR;

INTERFACE

Uses Graph;

Type TLocation=Object { Тип объекта "место" }

x,y:Integer; { Поля данных: координаты места }

Constructor Init(initX,initY:Integer);

{ Метод "конструктор"}

Destructor ZakLoc; { Метод "деструктор" }

End;

TPoint=Object(TLocation)

{ Тип объекта "точка"-наследника объекта "место"}

Procedure Show; Virtual; { Метод "рисование" }

Procedure Hide; Virtual; { Метод "гашение" }

Procedure MoveTo(newX,newY:Integer);{ Метод "перемещение" }

End;

TCircle=Object(TPoint)

{Тип объекта"окружность"-наследника объекта"точка"}

r:Integer; { Поле данного: радиус окружности }

Constructor Init(initX,initY,initR:Integer); { Метод }

{ "конструктор" }

Procedure Show; Virtual; { Метод "рисование" }

Procedure Hide; Virtual; { Метод "гашение" }

Procedure Bigger(newR:Integer); { Метод "изменение" }

Destructor ZakCir; { Метод "деструктор" }

End;

TSamolet=Object(TPoint)

{Тип объекта"самолетик"-наследника объекта"точка"}

m:Array[1..7] Of PointType; { Поле данного: }

{ массив координат }

Procedure Show; Virtual; { Метод "рисование" }

Procedure Hide; Virtual; { Метод "гашение" }

End;

TGraphWorld=Object { Тип объекта "графический мир" }

{ Поля данных: }

GraphDriver:Integer; { драйвер }

GraphMode:Integer; { режим }

Procedure InitWorld(gd,gm:Integer;Path:String);{ Метод }

{ "инициализация" }

Procedure EndWorld; { Метод "закрытие" }

End;

TPCircle=^TCircle;

IMPLEMENTATION

{ Описания методов объекта типа TLocation "место" }

Constructor TLocation.Init(initX,initY:Integer);

Begin

x:=initX; y:=initY { Текущие координаты }

End;

Destructor TLocation.ZakLoc;

Begin

End;

{ Описания методов объекта типа TPoint "точка" }

Procedure TPoint.Show;

Begin

PutPixel(x,y,GetColor) { Рисует точку текущим основным цветом }

End;

Procedure TPoint.Hide;

Begin

PutPixel(x,y,GetBkColor) { Рисует точку текущим цветом фона }

End;

Procedure TPoint.MoveTo(newX,newY:Integer);

Begin

Hide; { Гашение }

x:=newX; y:=newY; { Новые координаты }

Show { Рисование }

End;

{ Описания методов объекта типа ТCircle "окружность" }

Constructor TCircle.Init(initX,initY,initR:Integer);

Begin

TPoint.Init(initX,initY);

r:=initR { радиус окружности }

End;

Procedure TCircle.Show;

Begin

Circle(x,y,r); { Рисует окружность }

End;

Procedure TCircle.Hide;

Var color:Word;

Begin

color:=GetColor; { Текущий основной цвет }

SetColor(GetBkColor); { Текущий цвет рисунка }

Circle(x,y,r); { Рисует окружность }

SetColor(color); { Текущий цвет рисунка }

End;

Procedure TCircle.Bigger(newR:Integer); {Рисование окружности другого радиуса}

Begin

Hide;

r:=newR; { новый радиус }

Show

End;

Destructor TCircle.ZakCir;

Begin

End;

{ Описания методов объекта типа TSamolet "самолетик"}

{ Рисование самолетика }

Procedure TSamolet.Show;

Begin

m[1].x:=x; m[1].y:=y;

m[2].x:=x+10; m[2].y:=y+8;

m[3].x:=x+72; m[3].y:=y+8;

m[4].x:=x+57; m[4].y:=y+8;

m[5].x:=x+32; m[5].y:=y+2;

m[6].x:=x+57; m[6].y:=y+8;

m[7].x:=x+32; m[7].y:=y+13;

SetColor(3);

SetLineStyle(0,0,3);

DrawPoly(7,m); { Рисует самолет }

SetLineStyle(0,0,1);

End;

{ Гашение самолетика }

Procedure TSamolet.Hide;

Var p,color:Word;

Begin

color:=GetColor;

p:=GetBkColor;

SetColor(p);

SetLineStyle(0,0,3);

DrawPoly(7,m);

SetColor(color);

SetLineStyle(0,0,1);

End;

{ Описание методов объекта типа TGraphWorld "графический мир" }

Procedure TGraphWorld.InitWorld(gd,gm:Integer;Path:String);

Begin

GraphDriver:=gd;

GraphMode:=gm; { Заполнение полей }

InitGraph(GraphDriver,GraphMode,Path); { Инициализация графики }

End;

Procedure TGraphWorld.EndWorld;

Begin

CloseGraph { Закрытие графики }

End;

End.

Данная программа является узко направленной и может использоваться в области обороны (конкретно, противовоздушной обороны) для быстрого определения зон опасности, а так же в других областях с целью определения незащищенных зон границы какого-либо объекта.

Название программы: SAMOLETU.

Существует как SAMOLETU.pas или SAMOLETU.exe. Для запуска программы можно использовать TPascal 7.0. Программа написана на языке программирования Turbo Pascal. Требования к аппаратному обеспечению: ПЭВМ типа IBM. Требования к системному программному обеспечению: Pascal 7.0

Для своевременного отражения возможной воздушной агрессии на город необходимо обнаруживать средства воздушного нападения противника в момент подлета к границе «опасной зоны» - на некотором расстоянии от центра города.

Имеется некоторое количество комплексов ПВО, расположенных на границе города. Координата каждого комплекса ПВО задается углом поворота от нулевого направления. Для каждого комплекса известен радиус его действия.

Данная программа выполняет следующее:

1) определяет, надежно ли защищен город от нападения, т.е. верно ли, что обнаружение происходит при подлете к границе «опасной зоны» с любого направления;

2) в случае отрицательного ответа на первый пункт определяет диапазоны «опасных» направлений, т.е. таких направлений, с которых при подлете обнаружение не происходит.

3) Если есть опасные зоны, определяет, куда надо поместить дополнительные комплексы ПВО, чтобы город был защищен надежно, а также радиусы этих комплексов.

Данная программа является узко направленной и может использоваться в области обороны (конкретно, противовоздушной обороны) для быстрого определения зон опасности, а так же в других областях с целью определения незащищенных зон границы какого-либо объекта.

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

Используемые технические средства

Для обеспечения нормальной работы программы требуется операционная среда Windows, а также наличие среды Turbo Pascal 7.0.

Требования к аппаратному обеспечению: ПЭВМ типа IBM.

Вызов и загрузка программы

Так как программа содержится в виде SAMOLETU.pas, то ее можно запусти при помощи среды Turbo Pascal 7.0.

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

После появления заставки, на экране отображается запрос нажатия кнопки [Enter]. После нажатия кнопки [Enter] появляется основное окно, видно описание задачи, далее появляется запрос на ввод данных.

Входные данные

Входными данными программы являются различные характеристики города и комплексов ПВО:

1) Количество комплексов ПВО (M)- целочисленный тип данных без знака (Word).

Это количество уже установленных на границе города комплексов. Для количества комплексов в программе установлено ограничение - оно не должно превышать 1000, так как в большем количестве нет необходимости.

2) Радиус города в километрах (RG)- вещественный тип данных (Real)

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

3) Характеристики комплекса ПВО (PVO): координата (b) и радиус действия (r).

Характеристика комплекса представляет собой запись с двумя полями: 1- координата, 2-радиус действия

Координата - это угол, на который нужно повернуть ось Ох, чтобы оказаться в точке на окружности (границе города), где установлен данный комплекс ПВО. Тип координаты - вещественный (Real). Радиус действия - вещественный тип данных (Real)

Координата и радиус действия ПВО вводятся через пробел.

На координату и радиус действия в программе установлено ограничение: координата должна быть больше или равна 0о, но меньше 360о, так как этого диапазона достаточно, чтобы задать любую точку на окружности; радиус действия должен быть строго больше 0, это объясняется физическим смыслом данной величины.

Все введенные характеристики последовательно помещаются в файл.

Выходные данные

Выходными данными программы являются два файла (файл с исходными данными о комплексах ПВО и файл с некоторыми результатами выполнения программы), а также различные сообщения с результатами выполнения или сведениями об ошибке.

1) Файл с исходными данными о комплексах ПВО - это типизированный файл, элементами которого являются записи характеристик комплексов. Характеристика комплекса (PVO) представляет собой запись с двумя полями: 1- координата, 2-радиус действия.

Координата - это угол, на который нужно повернуть ось Ох, чтобы оказаться в точке на окружности (границе города), где установлен данный комплекс ПВО. Тип координаты - вещественный (Real). Радиус действия - вещественный тип данных (Real)

Файл ={ PVO 1, PVO2 , …, PVO n}

2) Файл с некоторыми результатами выполнения программы - файл, содержащий информацию об опасных зонах города. Это типизированный файл, элементами которого являются записи опасных зон.

Опасная зона представляет собой запись с двумя полями (Dang): 1- начальная координата опасной зоны, 2 - конечная координата опасной зоны. Начальная и конечная координата имеют вещественный тип данных (Real).

Файл ={ Dang 1, Dang 2 , …, Dang n}

4) Сообщения с результатами выполнения представляют собой:

- Сообщение о безопасности города

- Сообщение с информацией о координатах пересечения зон действия комплексов ПВО и зоны города.

- Если есть опасные зоны, выводится сообщение с информацией об этих зонах (их диапазоны), а также сообщение с рекомендациями: координаты и радиусы действия необходимых дополнительных комплексов ПВО.

- Сообщение об ошибке (недопустимые вводимые данные). Если вводимые данные недопустимы, завершения программы не происходит, выводится сообщение о том, какие из данных недопустимы, и ожидается повторный ввод.

Размещено на Allbest.ru


Подобные документы

  • Компьютерные атаки и технологии их обнаружения. Сетевые системы нахождения атак и межсетевые экраны. Программные средства анализа защищенности и отражения угроз. Внедрение программных средств выявления атак для информационной системы предприятия.

    курсовая работа [53,6 K], добавлен 16.03.2015

  • Общая характеристика информационных технологий и модели угроз компьютерной сети. Изучение средств защиты периметра сети и построение системы активного отражения атак в корпоративных сетях. Система обнаружения вторжений и автоматического отражения атаки.

    дипломная работа [770,6 K], добавлен 19.10.2011

  • Основания для разработки программы: назначение и сферы практического использования, главные предъявляемые требования. Характеристика логической структуры и используемые технические средства. Программа и методика испытаний. Эксплуатационные документы.

    курсовая работа [2,4 M], добавлен 16.12.2013

  • Разработка программы, реализующей метод принятия решения на основе паутинной диаграммы, исходя из количества объектов исследования, их весов и критериев оценки. Листинг программного кода и пример работы программы: расчет площади многоугольников-объектов.

    контрольная работа [1,1 M], добавлен 10.06.2011

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

    курсовая работа [1,2 M], добавлен 17.04.2013

  • Назначение и область применения, технические характеристики, постановка задачи, описание алгоритма и организация входных и выходных данных для программы. Разработка, описание логической структуры, используемые технические средства и условия выполнения.

    курсовая работа [969,3 K], добавлен 26.03.2009

  • Назначение и область применения программы, ее общее описание, функциональные особенности и задачи, логистическая структура, используемые технические средства. Создание руководства оператора. Расчет технико-экономических показателей создаваемой программы.

    курсовая работа [1,2 M], добавлен 09.11.2013

  • Выбор состава технических и программных средств для создания данного приложения "Экзаменатор", использование среды разработки Borland Delphi. Основные компоненты и спецификация программы. Используемые технические средства, описание и запуск программы.

    курсовая работа [540,8 K], добавлен 18.07.2012

  • Описание и функциональное назначение программы по оптимизации функции, ее логическая структура и используемые технические средства. Практическое применение программы, вызов и загрузка, входные и выходные данные, выполнение контрольного примера и листинг.

    курсовая работа [337,4 K], добавлен 26.02.2012

  • Контекстная диаграмма системы обслуживания и диаграмма декомпозиции. Обоснование необходимости внедрения информационной системы. Обзор существующих программных продуктов. ER-диаграмма системы, описание таблиц базы данных. Используемые системы кодирования.

    дипломная работа [577,2 K], добавлен 27.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.