46673 (607908), страница 2
Текст из файла (страница 2)
Программный комплекс "Автоматизированная система обработки структур данных" предназначен для работы в операционных системах семейства 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.
В ходе тестирования были получены верные результаты работы алгоритмов нахождения максимальных и минимальных значений матрицы, перестановки строк и столбцов местами, нахождения суммы элементов матрицы, а также сортировки структур данных различного типа, что говорит о достижении целей курсовой работы.
Библиографический список
-
ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.
-
ГОСТ 19.102-77. ЕСПД. Стадии разработки.
-
ГОСТ 34.602-89. ЕСПД. Информационная технология. Техническое задание на создание автоматизированных систем.
-
ГОСТ 19.402-78. ЕСПД. Описание программы.
-
ГОСТ 19.509-79. ЕСПД. Руководство программиста.
-
ГОСТ 19.505-79. ЕСПД. Руководство оператора.
-
Кнут Д. Искусство программирования для ЭВМ. Т.1. Основные алгоритмы, Т.2. Получисленные алгоритмы, Т.3. Сортировка и поиск / Пер. с. англ. – М.: Мир, 1976-1977.
-
Бутомо И.Д., Самочадин А.В., Усанова Д.В. Программирование на алгоритмическом языке Паскаль для микроЭВМ: Учебное пособие. - Л.: ЛГУ, 1985. - 216 с.
-
Форсайт Р. Паскаль для всех. - М.: Машиностроение, 1986. - 286 с.
-
Электронные вычислительные машины: В 8 кн.: Учебное пособие для вузов /под ред.А.Я. Савельева. Кн.5. Языки программирования (Паскаль, ПЛ/М) - М.: Высш. школа, 1987. - 143 с.
-
Уилсон И.Р., Эддиман А.М. Практическое введение в Паскаль. - М.: Радио и связь, 1983. - 144 с.
-
Керниган Б., Плоджер Ф. Инструментальные средства программирования на языке Паскаль. - М.: Радио и связь, 1985. -312с.
-
Белецкий Я. Турбо Паскаль с графикой для персональных компьютеров перевод с польского Д.И. Юренкова. - М.: Машиностроение, 1991. - 320 с.
-
Сергиевский М.В., Шалашов А.В. Турбо Паскаль 7.0; язык, среда программирования. - М: Машиностроение. -1994,-254 с. ил.
-
Справочник по процедурам и функциям Borland Pascal 7.0. - Киев: Диалектика, 1993. - 272 с.
Приложения
Модуль zad1
unit zad1;
interface
uses 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);
Var
i, j: Byte;
Begin
Repeat
WriteLn('Введите размеры матрицы не более ',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 Do
For j: =1 To n Do Begin
WriteLn('Введите элементы матрицы A [', i,',',j,'] ');
ReadLn(A [i,j]);
End;
clrscr;
WriteLn('Исходная матрица');
For i: =1 To m Do Begin
For j: =1 To n Do Begin
write(A [i,j]: 5: 4,' ');
end;
writeln;
end;
End;
{Процедура нахождения наименьших значений строк матрицы}
Procedure obrab (A: Matrix; m, n: Integer; Var b: Massiv);
Var
i, j: Byte;
Begin
For i: =1 To m Do Begin
b [i]: =A [i,1] ;
For j: =2 To n Do
If A [i,j]
End;
End;
{Процедура вывода массива наименьших значений строк на экран}
Procedure vyvod (A: Matrix; b: Massiv; m,n: Integer);
Var
i,j: Byte;
Begin
WriteLn('Наименьшие значения элементов строк матрицы A: ');
For i: =1 To m Do Begin
WriteLn(b [i]: 5: 4);
End;
End;
end.
Модуль zad2
Unit zad2;
Interface
Uses 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;
begin
repeat
writeln('Введите размер матрицы');
readln(n1);
until (n1>1);
for i: =1 to n1 do
for j: =1 to n1 do begin
writeln('Введите элементы матрицы A [', i,',',j,'] ');
readln(A1 [i,j])
end;
WriteLn('Исходная матрица');
For i: =1 To n1 Do Begin
For j: =1 To n1 Do Begin
write(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;
begin
max: =abs(A1 [i,1]);
for i: =1 to n1 do begin
for j: =1 to n1 do
if abs(A1 [i,j]) >max then begin
k1: =i;
l1: =j;
max: =A1 [k1,l1]
end
end
end;
{Процедура перестановки соседних двух строк и соседних двух столбцов местами}
procedure perestanovka(var A1: Matr; n1,k1,l1: integer);
var t: real; i,j: byte;
begin
if (k1<>1) then
for j: =1 to n1 do begin
t: =A1 [1,j] ;
A1 [1,j]: =A1 [k1,j] ;
A1 [k1,j]: =t;
end;
if (l1<>1) then
for i: =1 to n1 do begin
t: =A1 [i,1] ;
A1 [i,1]: =A1 [i,l1] ;
A1 [i,l1]: =t
end
end;
{Процедура вывода на экран преобразованной матрицы}
procedure vyvod1 (A1: Matr; n1: integer);
var i,j: byte;
begin
writeln('Преобразованная матрица');
for i: =1 to n1 do begin
for j: =1 to n1 do
write(A1 [i,j]: 5: 4,' ');
writeln
end
end;
end.
Модуль zad3
unit zad3;
interface
uses 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);
Var
i, j: Byte;
Begin
Repeat
WriteLn('Введите размеры матрицы');
ReadLn(m);
ReadLn(n);
Until (m>1) AND (n>1) AND (m<=100) AND (n<=100);
For i: =1 To m Do
For j: =1 To n Do Begin
WriteLn('Введите элементы матрицы A [', i,',',j,'] ');
ReadLn(A [i,j]);
End;
clrscr;
WriteLn('Исходная матрица');
For i: =1 To m Do Begin
For j: =1 To n Do Begin
write(A [i,j]: 5: 4,' ');
end;
writeln;
end;
End;
{Процедура суммирования элементов массива, граничных с текущим}
procedure obrab1(var A: Mat; var C: Mat; m,n: integer);
var i,j: byte;
begin
for i: =2 to m-1 do
for j: =2 to n-1 do
C [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 begin
C [1,j]: =A [1,j] ;
C [m,j]: =A [m,j]
end;
for i: =2 to m-1 do begin
C [i,1]: =A [i,1] ;
C [i,n]: =A [i,n]
end;
end;
{Процедура вывода преобразованной матрицы}
procedure vyvod2 (C: Mat; m,n: integer);
var i,j: byte;
begin
writeln('Преобразованная матрица');
for i: =1 to m do begin
for j: =1 to n do
write(C [i,j]: 5: 4,' ');
writeln
end
end;
end.
Модуль zad4
unit zad4;
interface
uses crt;
const {определение константы размерности массива}
n_max=15;
type {Определение типа запись}
Tabliza=record
nomer,data: byte;
tovar: string [20] ;
srok: integer;
stoim: real
end;
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;
begin
assign(f,'tab. pas');
fname: ='tab. pas';
{$I-}
reset(f); { открыть файл для чтения }
{$I+}
res: =IOResult;
if res<>0 then
begin
writeln('ОШИБКА: файл ',fname, ' не найден');
writeln('Для продолжения нажмите Enter');
readln;
halt;
end;
readln(f);
for i: =1 to 15 do begin
read(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;
begin
t: =d [1] ;
for i: =2 to 15 do
for j: =15 downto i do
if d [j-1]. data>d [j]. data then begin
t: =d [j-1] ;
d [j-1]: =d [j] ;
d [j]: =t
end
end;
{Процедура записи отсортированных данных в файл}
procedure vyvod3(d: spisok);
var
i: byte;
f1: text;
begin
assign(f1,'sort_tab. pas');
rewrite(f1);
writeln(f1,'nomer tovar data srok stoimost');
for i: =1 to 15 do begin
write(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;
BEGIN
clrscr;
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_ of
1: begin
clrscr;
vvod(A_, m_, n_);
obrab(A_, m_, n_, b_);
vyvod(A_,b_, m_,n_);
writeln('Для продолжения нажмите Enter');
readln;
end;
2: begin
clrscr;
vvod1(A1_,n_);
poiskmax(A1_,n_,g_,l_);
perestanovka(A1_,n_,g_,l_);
vyvod1(A1_,n_);
writeln('Для продолжения нажмите Enter');
readln;
end;
3: begin
clrscr;
vvod3(A2_,m_,n_);
obrab1(A2_,C2_,m_,n_);
vyvod2(C2_,m_,n_);
writeln('Для продолжения нажмите Enter');
readln;
end;
4: begin
clrscr;
vvod2(d_);
sort(d_);
vyvod3(d_);
writeln('Результат записан в файл sort_tab. pas. ');
writeln('Для продолжения нажмите Enter');
readln;
end;
5: W: =6;
end;
clrscr;
end;
END.