так, выбираем пункт два в главном меню программы и нажимаем 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.
Страницы: 1, 2
|