|
Автоматизированная система обработки структур данных
Автоматизированная система обработки структур данных
2 Федеральное агентство по образованию Государственное образовательное учреждение Высшего профессионального образования Тульский государственный университет КАФЕДРА АВТОМАТИЗИРОВАННЫХ ИНФОРМАЦИОННЫХ И УПРАВЛЯЮЩИХ СИСТЕМ ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовой работе на тему "Автоматизированная система обработки структур данных" |
Студент гр. | ______________ | ______________ | ______________ | | | (индекс группы) | (подпись и дата) | (инициалы и фамилия) | | |
|
Руководитель | ______________ | ______________ | ______________ | | | (должность и ученая степень) | (подпись и дата) | (инициалы и фамилия) | | |
ТУЛА 200… СодержаниеВведение 3- 1. Техническое задание 4
- 1.1 Назначение разработки 4
- 1.2 Требование к программе 5
- 1.3 Стадии и этапы разработки 6
- 2. Описание программы 7
- 2.1 Функциональное назначение 7
- 2.2 Описание логической структуры 7
- 2.3 Входные и выходные данные 10
- 3. Инструкция по эксплуатации программы 12
- 3.1 Назначение программы 12
- 3.2 Выполнение программы 13
- 3.3 Описание контрольного примера 14
- Заключение 18
- Библиографический список 19
- Приложения 20
ВведениеЗадача разработки программного обеспечения систем различного назначения является основополагающей задачей программирования. Курсовая работа предполагает выполнение всех основных стадий и этапов разработки программ и программной документации в соответствии с существующими государственными и отраслевыми стандартами. Основная цель работы заключается в закреплении навыков самостоятельного использования теоретического материала и практического опыта для решения задач проектирования и разработки ПО систем различного назначения. В данной работе рассмотрены и реализованы четыре задачи, объединенные в единую систему. Три задачи содержат обработку массивов данных, а четвертая предполагает работу с файлами и использование записей. В качестве инструментального средства был выбран язык структурного программирования Паскаль, который является достаточно простым и удобным, а также популярным средством разработки такого вида программного обеспечения. В курсовой работе приведены тексты программного кода с подробным описанием, а также технология работы созданных программных средств с выводом результатов. 1. Техническое задание1.1 Назначение разработкиНеобходимо решить четыре задачи: Дана действительная матрица размера mxn, причем 1?m?20; 1?n?40. Определить числа b1,…, bm, равные соответственно наименьшим значениям элементов строк. Назовем допустимым преобразованием матрицы перестановку двух строк или двух столбцов. Дана действительная квадратная матрица порядка n. С помощью допустимых преобразований добиться того, чтобы один из элементов матрицы, обладающий наибольшим по модулю значением, располагался в левом верхнем углу матрицы. В массиве X(m,n) каждый элемент (кроме граничных) заменить суммой непосредственно примыкающих к нему элементов по вертикали, горизонтали и диагоналям. Ввести и сохранить в файле данные следующей структуры: № квитанции, наименование товара, дата поступления товара, срок, на который сдан товар, стоимость товара. Организовать просмотр исходных данных и вывести список товаров, отсортированный по дате поступления (по возрастанию, метод пузырька) с указанием № квитанции, наименования товара и даты поступления. Ввод и вывод данных организовать в виде таблиц. Отладку программы производить на примере файла, состоящего не менее чем из 15 записей. На втором этапе необходимо объединить эти задачи в единый программный комплекс, ориентированный на обработку оперативных и внешних структур данных. Программный комплекс должен иметь модульную структуру, т.е. каждая подзадача должна быть реализована независимо от других и использовать стандартные программные модули языка программирования Паскаль.1.2 Требование к программеОсновные функции, которые должно выполнять данное программное средство: Удобный запуск из единой программной средыВвод и обработка двумерных массивов данных: поиск наименьших и наибольших значений матрицы, перестановка строк и столбцов матрицы, вычисление суммы элементов, примыкающих к текущему. Ввод и сохранение данных в файле. Сортировка данных различного типа. Входными данными программного комплекса являются матрицы размера mxn и nxn, файл с данными различных типов. Выходные данные - матрицы размера m, nxn, nxm, файл с данными различных типов. Для разработки программного комплекса был выбран язык Паскаль и среда разработки Турбо Паскаль. Паскаль - это один из наиболее распространённых языков программирования 80-90х годов, поддерживающий самые современные методологии проектирования программ (нисходящее, модульное проектирование, структурное программирование), имеет свою достаточно богатую историю развития. Новую жизнь языку дала фирма Борланд, разработавшая на его базе семейство Паскаль - систем, называемых Турбо Паскалем. Интегрированная среда, обеспечивающая многооконную разработку программной системы, обширный набор встроенных в неё средств компиляции и отладки, доступный для работы через легко осваиваемое меню, - всё это обеспечивает высокую производительность труда программиста, недостижимую при работе со старыми средами. Язык Турбо Паскаль хорошо подходит для обучения программированию. 1.3 Стадии и этапы разработкиТехническое задание. (1-2 недели) На стадии технического задания производится постановка задачи, определяются общие требования к программе, выполняется технико-экономическое обоснование разработки программы, определяются входные и выходные данные, выбирается язык программирования, определяются требования к техническим средствам. Эскизный проект. (1 неделя) На стадии эскизного проекта уточняются методы решения задачи, определяется структура входных и выходных данных, разрабатывается общее описание алгоритма решения задачи. Технический проект. (1-2 недели) В рамках технического проекта производится детальная разработка алгоритма решения задачи, определяются формы представления входных и выходных данных, разрабатывается структура программы, окончательно определяется конфигурация технических средств. Рабочий проект. (6-7 недель) На стадии рабочего проектирования производится программирование задачи, отладка программы, составление тестов для испытания программы, разрабатывается документация в соответствии с ЕСПД. Заключительным этапом рабочего проектирования является проведения испытания программы на контрольном примере, осуществление корректировки программы по результатам испытаний. - Внедрение. (2-3 недели). На стадии внедрения осуществляется передача программы и программной документации в эксплуатацию, оформление акта о внедрении программы. 2. Описание программы2.1 Функциональное назначениеНаименование программы: Автоматизированная система обработки структур данных. Назначение программы: Обработка табличных данных, работа с файлами, обработка данных различных типов. Язык программирования: Язык структурного программирования Паскаль. Специальное программное обеспечение: Среда программирования Турбо Паскаль фирмы Borland. Функциональные ограничения на использование программы: Нет. Работает на всех типах персональных компьютеров. 2.2 Описание логической структурыПрограммный комплекс запускается с помощью файла menu. exe. При запуске мы видим главное меню программы, состоящее из пяти пунктов: Задача1, Задача2, Задача3, Задача4, Выход. Блок-схема алгоритма программы с учетом текста программы на языке Паскаль в Приложении выглядит следующим образом: Опишем подпрограммы, которые представлены в блок-схеме алгоритма: vvod(A_, m_, n_) - ввод матрицы размера m на n и вывод её на экран; obrab(A_, m_, n_, b_) - поиск наименьших значений строк матрицы; vyvod(A_,b_, m_,n_) - вывод массива наименьших значений строк матрицы; vvod1(A1,n_) - - ввод матрицы размера m на m и вывод её на экран; poiskmax(A1,n_,g_,l_) - поиск максимального по модулю значения массива; perestanovka(A1,n_,g_,l_) - перестановка строк и столбцов матрицы, содержащих максимальный элемент; vyvod1(A1,n_) - вывод матрицы m на n с наибольшим значением в левом верхнем углу; obrab1(A_,C_,m_,n_) - замена элементов матрицы суммой соседних элементов; vyvod2(C_,m_,n_) - вывод преобразованной матрицы на экран; vvod2(d_) - чтение из файла данных; sort(d_) - сортировка данных файла по дате; vyvod3(d_) - запись отсортированных данных в файл; Эти функции и процедуры, используемые при выборе числовых значений от 1 до 5 описаны в модулях zad1, zad2, zad3, zad4. 2.3 Входные и выходные данныеВ начале работы с программным комплексом необходимо осуществить выбор необходимого режима работы с помощью числовой переменной, а затем ввести данные в зависимости от выбранной задачи. Опишем входные данные подробнее: Переменная k целого типа отвечает за выбор пункта главного меню программного комплекса. При выборе первого пункта меню необходимо ввести следующую информацию: Матрицу m на n, элементы которой являются действительными числамиРазмерности матрицы определены как константы: m=20, n=40При выборе второго пункта меню необходимо ввести следующую информацию: Матрицу m на m, элементы которой являются действительными числамиПри выборе третьего пункта меню необходимо ввести следующую информацию: Матрицу m на n, элементы которой являются действительными числамиПеред выбором четвертого пункта меню необходимо подготовить файл tab. pas с табличной информацией: номер квитанции, наименование товара, дата поступления товара, срок, на который сдан товар, стоимость товара и расположить его в каталоге с программой. Вывод результатов работы осуществляется после решения каждой из четырех задач: При решении первой задачи осуществляется вывод одномерного массива действительных чисел размерностью m, наименьших в каждой строке матрицы m на n. При решении второй задачи осуществляется вывод преобразованного массива действительных чисел m на m, где в верхнем левом углу находится наибольший элемент введенного массива. При решении третьей задачи осуществляется вывод преобразованного массива действительных чисел m на n, где элементы входного массива заменены суммой соседних (кроме граничных). При решении четвертой задачи осуществляется вывод отсортированной по дате таблицы с данными различного типа в файл sort_tab. pas. 3. Инструкция по эксплуатации программы3.1 Назначение программыПрограммный комплекс "Автоматизированная система обработки структур данных" предназначен для управления выполнением четырех задач, которые осуществляют обработку массивов данных, а также обработку файлов с данными разного типа. Кратко опишем основные функции, которые выполняет данное программное средство: Простой и удобный запуск каждой задачи из единой программной оболочки. Ввод и обработка двумерных массивов данных: поиск наименьших и наибольших значений матрицы, перестановка строк и столбцов матрицы, вычисление суммы элементов, соседних с текущим. Считывание, обработка и сохранение данных в файле. Сортировка данных различного типа. Удобная система завершения работы после выполнения каждой задачи и функция выхода из программного комплексаПрограммный комплекс "Автоматизированная система обработки структур данных" предназначен для работы в операционных системах семейства Windows, состоит из файла progr. exe, никаких дополнительных программных компонентов для работы не требуется. В каталоге с программой также должен располагаться файл tab. pas для решения четвертой задачи. 3.2 Выполнение программыЗапуск программного комплекса осуществляется с помощью файла progr. exe. После этого мы попадаем в главное меню программы (рис.1): Рис.1. Главное меню программного комплекса. После выбора соответствующего номера мы попадаем в режим ввода данных той или иной задачи (рис.2): Рис.2. Режим ввода данных для первой задачи. Если мы ввели данные не верно, то программа попросит повторить ввод (рис.3): Рис.3. Действия программы при неверном вводе данных. Выдача результатов осуществляется после выполнения необходимых условий ввода данных (рис.4): Рис.4. Выдача результатов работы первой задачи. После нажатия на клавишу Enter мы попадаем в главное меню программы, где можем продолжить работу или выйти из программы, введя цифру 5. 3.3 Описание контрольного примераРассмотрим пример нахождения наибольшего по модулю элемента матрицы и перемещения его в левый верхний угол матрицы с помощью перестановки двух строк или двух столбцов (Задача 2). Итак, выбираем пункт два в главном меню программы и нажимаем Enter (рис.5): Рис.5. Выбор режима работы программыДалее необходимо ввести размер действительной квадратной матрицы и ее элементы (Рис.6): Рис.6. Ввод действительной квадратной матрицы После этого получаем следующие результаты (рис.7): Рис.7. Вывод результатов работы задачи 2. Число 7 - наибольшее значение матрицы стоит в левом верхнем углу преобразованной матрицы. Нажимаем Enter и возвращаемся в главное меню программного комплекса. Рассмотрим пример работы третьей задачи. Ввод данных осуществляется аналогичным для первой задачи образом (рис. 8) Рис.8. Ввод данных для задачи 3После этого получаем следующие результаты (рис.9): Рис.9. Вывод результатов работы задачи 3Получаем сумму соседних элементов массива, записанных вместо значений 4.0000 и 3.0000.Рассмотрим пример работы с файлами. В главном меню выбираем пункт номер 4. Если файл tab. pas с нужными данными существует, то выдается следующее сообщение (рис.10): Рис.10. Вывод результатов работы задачи 4.Результаты работы программы (отсортированный по дате набор данных) необходимо посмотреть в файле sort_tab. pas. Если исходного файла не существует, то выдается ошибка (рис.11):Рис.11. Отсутствие файла с даннымиЗаключениеВ данной курсовой работе решены задачи обработки массивов данных и файлов данных различного типа. В процессе создания курсовой работы разработан алгоритм решения четырех поставленных подзадач. Они были объединены в единый программный комплекс, реализованный на языке Pascal в среде программирования Turbo Pascal. В ходе тестирования были получены верные результаты работы алгоритмов нахождения максимальных и минимальных значений матрицы, перестановки строк и столбцов местами, нахождения суммы элементов матрицы, а также сортировки структур данных различного типа, что говорит о достижении целей курсовой работы. Библиографический список1. ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. 2. ГОСТ 19.102-77. ЕСПД. Стадии разработки. 3. ГОСТ 34.602-89. ЕСПД. Информационная технология. Техническое задание на создание автоматизированных систем. 4. ГОСТ 19.402-78. ЕСПД. Описание программы. 5. ГОСТ 19.509-79. ЕСПД. Руководство программиста. 6. ГОСТ 19.505-79. ЕСПД. Руководство оператора. 7. Кнут Д. Искусство программирования для ЭВМ. Т.1. Основные алгоритмы, Т.2. Получисленные алгоритмы, Т.3. Сортировка и поиск / Пер. с. англ. - М.: Мир, 1976-1977. 8. Бутомо И.Д., Самочадин А.В., Усанова Д.В. Программирование на алгоритмическом языке Паскаль для микроЭВМ: Учебное пособие. - Л.: ЛГУ, 1985. - 216 с. 9. Форсайт Р. Паскаль для всех. - М.: Машиностроение, 1986. - 286 с. 10. Электронные вычислительные машины: В 8 кн.: Учебное пособие для вузов /под ред.А.Я. Савельева. Кн.5. Языки программирования (Паскаль, ПЛ/М) - М.: Высш. школа, 1987. - 143 с. 11. Уилсон И.Р., Эддиман А.М. Практическое введение в Паскаль. - М.: Радио и связь, 1983. - 144 с. 12. Керниган Б., Плоджер Ф. Инструментальные средства программирования на языке Паскаль. - М.: Радио и связь, 1985. -312с. 13. Белецкий Я. Турбо Паскаль с графикой для персональных компьютеров перевод с польского Д.И. Юренкова. - М.: Машиностроение, 1991. - 320 с. 14. Сергиевский М.В., Шалашов А.В. Турбо Паскаль 7.0; язык, среда программирования. - М: Машиностроение. -1994,-254 с. ил. 15. Справочник по процедурам и функциям Borland Pascal 7.0. - Киев: Диалектика, 1993. - 272 с. ПриложенияМодуль zad1unit zad1; interfaceuses crt; Const {определение констант размерности массива}max_m = 20; max_n = 40; Type {определение типов двумерного и одномерного массива}Matrix = array [1. . max_m,1. . max_n] Of Real; Massiv = array [1. . max_m] Of Real; {Определение используемых процедур}Procedure vvod (Var A: Matrix; Var m, n: Integer); Procedure obrab (A: Matrix; m, n: Integer; Var b: Massiv); Procedure vyvod (A: Matrix; b: Massiv; m,n: Integer); implementation{Процедура ввода элементов двумерного массива и вывода его на экран}Procedure vvod (Var A: Matrix; Var m, n: Integer); Vari, j: Byte; BeginRepeatWriteLn('Введите размеры матрицы не более ',max_m,' ',max_n); ReadLn(m); ReadLn(n); Until (m>1) AND (n>1) AND (m<=20) AND (n<=40); For i: =1 To m DoFor j: =1 To n Do BeginWriteLn('Введите элементы матрицы A [', i,',',j,'] '); ReadLn(A [i,j]); End; clrscr; WriteLn('Исходная матрица'); For i: =1 To m Do BeginFor j: =1 To n Do Beginwrite(A [i,j]: 5: 4,' '); end; writeln; end; End; {Процедура нахождения наименьших значений строк матрицы}Procedure obrab (A: Matrix; m, n: Integer; Var b: Massiv); Vari, j: Byte; BeginFor i: =1 To m Do Beginb [i]: =A [i,1] ; For j: =2 To n DoIf A [i,j] <b [i] Then b [i]: = A [i,j] End; End; {Процедура вывода массива наименьших значений строк на экран}Procedure vyvod (A: Matrix; b: Massiv; m,n: Integer); Vari,j: Byte; BeginWriteLn('Наименьшие значения элементов строк матрицы A: '); For i: =1 To m Do BeginWriteLn(b [i]: 5: 4); End; End; end. Модуль zad2Unit zad2; InterfaceUses crt; Type {определение типа двумерного массива}Matr = array [1. .50,1. .50] Of Real; {Определение используемых процедур}procedure vvod1(var A1: Matr; var n1: integer); procedure poiskmax(A1: Matr; n1: integer; var k1,l1: byte); procedure perestanovka(var A1: Matr; n1,k1,l1: integer); procedure vyvod1 (A1: Matr; n1: integer); implementation{Процедура ввода размеров и элементов матрицы, а также вывод её на экран}procedure vvod1(var A1: Matr; var n1: integer); var i,j: byte; beginrepeatwriteln('Введите размер матрицы'); readln(n1); until (n1>1); for i: =1 to n1 dofor j: =1 to n1 do beginwriteln('Введите элементы матрицы A [', i,',',j,'] '); readln(A1 [i,j]) end; WriteLn('Исходная матрица'); For i: =1 To n1 Do BeginFor j: =1 To n1 Do Beginwrite(A1 [i,j]: 5: 4,' '); end; writeln; end; end; {Процедура поиска максимального значения матрицы}procedure poiskmax(A1: Matr; n1: integer; var k1,l1: byte); var i,j: byte; max: real; beginmax: =abs(A1 [i,1]); for i: =1 to n1 do beginfor j: =1 to n1 doif abs(A1 [i,j]) >max then begink1: =i; l1: =j; max: =A1 [k1,l1] endendend; {Процедура перестановки соседних двух строк и соседних двух столбцов местами}procedure perestanovka(var A1: Matr; n1,k1,l1: integer); var t: real; i,j: byte; beginif (k1<>1) thenfor j: =1 to n1 do begint: =A1 [1,j] ; A1 [1,j]: =A1 [k1,j] ; A1 [k1,j]: =t; end; if (l1<>1) thenfor i: =1 to n1 do begint: =A1 [i,1] ; A1 [i,1]: =A1 [i,l1] ; A1 [i,l1]: =tendend; {Процедура вывода на экран преобразованной матрицы}procedure vyvod1 (A1: Matr; n1: integer); var i,j: byte; beginwriteln('Преобразованная матрица'); for i: =1 to n1 do beginfor j: =1 to n1 dowrite(A1 [i,j]: 5: 4,' '); writelnendend; end. Модуль zad3unit zad3; interfaceuses crt; Const {определение констант размерности массива}m2 = 50; n2 = 50; Type {определение типа двумерного массива}Mat = array [1. . m2,1. . n2] Of Real; {Определение используемых процедур}Procedure vvod3 (Var A: Mat; Var m, n: Integer); procedure obrab1(var A: Mat; var C: Mat; m,n: integer); procedure vyvod2 (C: Mat; m,n: integer); implementation{Процедура ввода размерности и элементов матрицы, а также вывода её на экран}Procedure vvod3 (Var A: Mat; Var m, n: Integer); Vari, j: Byte; BeginRepeatWriteLn('Введите размеры матрицы'); ReadLn(m); ReadLn(n); Until (m>1) AND (n>1) AND (m<=100) AND (n<=100); For i: =1 To m DoFor j: =1 To n Do BeginWriteLn('Введите элементы матрицы A [', i,',',j,'] '); ReadLn(A [i,j]); End; clrscr; WriteLn('Исходная матрица'); For i: =1 To m Do BeginFor j: =1 To n Do Beginwrite(A [i,j]: 5: 4,' '); end; writeln; end; End; {Процедура суммирования элементов массива, граничных с текущим}procedure obrab1(var A: Mat; var C: Mat; m,n: integer); var i,j: byte; beginfor i: =2 to m-1 dofor j: =2 to n-1 doC [i,j]: =A [i-1,j-1] +A [i,j-1] +A [i+1,j-1] +A [i-1,j] +A [i+1,j] +A [i-1,j+1] +A [i,j+1] +A [i+1,j+1] ; for j: =1 to n do beginC [1,j]: =A [1,j] ; C [m,j]: =A [m,j] end; for i: =2 to m-1 do beginC [i,1]: =A [i,1] ; C [i,n]: =A [i,n] end; end; {Процедура вывода преобразованной матрицы}procedure vyvod2 (C: Mat; m,n: integer); var i,j: byte; beginwriteln('Преобразованная матрица'); for i: =1 to m do beginfor j: =1 to n dowrite(C [i,j]: 5: 4,' '); writelnendend; end. Модуль zad4unit zad4; interfaceuses crt; const {определение константы размерности массива}n_max=15; type {Определение типа запись}Tabliza=recordnomer,data: byte; tovar: string [20] ; srok: integer; stoim: realend; spisok=array [1. . n_max] of Tabliza; {Определение используемых процедур}procedure vvod2(var d: spisok); procedure sort(var d: spisok); procedure vyvod3(d: spisok); implementation{Процедура считывания данных из файла}procedure vvod2(var d: spisok); var i: byte; f: text; res: integer; fname: string [80] ; otv: char; beginassign(f,'tab. pas'); fname: ='tab. pas'; {$I-}reset(f); { открыть файл для чтения }{$I+}res: =IOResult; if res<>0 then beginwriteln('ОШИБКА: файл ',fname, ' не найден'); writeln('Для продолжения нажмите Enter'); readln; halt; end; readln(f); for i: =1 to 15 do beginread(f,d [i]. nomer); read(f,d [i]. tovar); read(f,d [i]. data); read(f,d [i]. srok); read(f,d [i]. stoim); end; close(f); end; {Процедура сортировки данных по дате}procedure sort(var d: spisok); var i,j: byte; t: tabliza; begint: =d [1] ; for i: =2 to 15 dofor j: =15 downto i doif d [j-1]. data>d [j]. data then begint: =d [j-1] ; d [j-1]: =d [j] ; d [j]: =tendend; {Процедура записи отсортированных данных в файл}procedure vyvod3(d: spisok); vari: byte; f1: text; beginassign(f1,'sort_tab. pas'); rewrite(f1); writeln(f1,'nomer tovar data srok stoimost'); for i: =1 to 15 do beginwrite(f1,d [i]. nomer); write(f1,d [i]. tovar); write(f1,d [i]. data: 3); write(f1,d [i]. srok: 5); write(f1,d [i]. stoim: 8: 0); writeln(f1); end; close(f1); end; end. Основная программаProgram auto; {Подключение вышеописанных модулей}Uses crt,zad1,zad2,zad3,zad4; var A_,C_: Matrix; A1_: Matr; A2_,C2_: Mat; b_: Massiv; k_,W,m_, n_: Integer; g_,l_: byte; d_: spisok; f_: text; BEGINclrscr; W: =1; While W<>6 do begin{формирование пунктов меню программы}gotoxy(5,3); write('Автоматизированная система обработки структур данных'); gotoxy(15,9); write('1. Задача 1'); gotoxy(15,11); write('2. Задача 2'); gotoxy(15,13); write('3. Задача 3'); gotoxy(15,15); write('4. Задача 4'); gotoxy(15,17); write('5. Выход'); gotoxy(1, 19); write('Выберите дальнейший режим работы: '); {Выбор нужного пункта программы}readln(k_); case k_ of1: beginclrscr; vvod(A_, m_, n_); obrab(A_, m_, n_, b_); vyvod(A_,b_, m_,n_); writeln('Для продолжения нажмите Enter'); readln; end; 2: beginclrscr; vvod1(A1_,n_); poiskmax(A1_,n_,g_,l_); perestanovka(A1_,n_,g_,l_); vyvod1(A1_,n_); writeln('Для продолжения нажмите Enter'); readln; end; 3: beginclrscr; vvod3(A2_,m_,n_); obrab1(A2_,C2_,m_,n_); vyvod2(C2_,m_,n_); writeln('Для продолжения нажмите Enter'); readln; end; 4: beginclrscr; vvod2(d_); sort(d_); vyvod3(d_); writeln('Результат записан в файл sort_tab. pas. '); writeln('Для продолжения нажмите Enter'); readln; end; 5: W: =6; end; clrscr; end; END.
|
|