- •1Общие методические указания
- •1.1.Цель и задачи курсовой работы
- •1.2.Порядок выполнения работы
- •1.3.Этапы решения задачи на эвм и контроль хода выполнения работы
- •1.4.Оформление курсовой работы
- •1.5.Порядок сдачи оформленной курсовой работы
- •2Технология и методы программирования
- •3Структура стандартов единой системы программной документации
- •4Требования к оформлению программных документов в соответствии со стандартами
- •5Оформление алгоритмов в соответствии со стандартами
- •5.1. Схемы алгоритмов
- •5.2. Структурограммы
- •6Примеры и рекомендации по выполнению и оформлению курсовой работы
- •6.1. Титульный лист
- •Пояснительная записка
- •6.2. Оглавление
- •6.3. Задание
- •Литература
- •6.4. Текст пояснительной записки
- •Введение
- •Задание 2.1. Математика
- •Задание 2.2. Логические схемы
- •Задание 2.3. Вступительные экзамены
- •Задание 2.4. Транслятор
- •Задание 2.5. Программирование на Паскале
- •Задание 2.6. Начинающий программист
- •Задание 2.7. Алгоритмизация
- •Задание 2.8. Справочник
- •Задание 2.9. Двоичная арифметика
- •Задание 2.10. Работа с файлами
- •Тема 3. Информационно - справочные программы
- •Задание 3.1. Косметическая фирма
- •Задание 3.2. Фирма по производству скобяных изделий
- •Задание 3.3. Туристическое агентство
- •Задание 3.4. Телефонный справочник
- •Задание 3.5. Аптека
- •Задание 3.6. Фирма по продаже эвм
- •Задание 3.11. Библиотека
- •Задание 3.12. Фирма «Социальные услуги»
- •Задание 3.13. Фирма по услугам связи
- •Задание 3.14. Справочная служба гаи
- •Тема 4. Проектирование баз данных и файловых структур
- •Задание 4.1. Расписание движения поездов
- •Задание 4.2. Диспетчер
- •Задание 4.3. База данных
- •Задание 4.4. Метрология
- •Задание 4.5. Анкета
- •Задание 4.6. Регистратура
- •Задание 4.7. Словарь технических терминов
- •Задание 4.8. Англо-русский словарь
- •Задание 4.9. Каталог
- •Задание 4.10. Зарплата
- •Задание 4.11. Стипендия
- •Задание 4.12. Пересдача
- •Тема 5. Игровые программы
- •Задание 5.1. "Что, где, когда?"
- •Задание 5.2. Искатель кладов
- •Задание 5.3. Пасьянс
- •Задание 5.4. Морской бой
- •Задание 5.5. Игра "15"
- •Задание 5.6. Лабиринт
- •Задание 5.7. Тир
- •Задание 5.8. Xonix
- •Задание 5.9. Карты
- •Задание 5.10. Домино
- •Тема 6. Графические программы
- •Задание 6.1. Построение графиков аналитических функций
- •Задание 6.2. Построение графиков табличных функций
- •Задание 6.3. Табло для голосования
- •Задание 6.4. Графический редактор
- •Задание 6.5. Изометрия
- •Задание 6.6. Сечения
- •Задание 6.7. Графическая интерпретация математических методов
- •Задание 6.8. Сортировка
- •Задание 6.9. Клавиатура
- •Задание 6.10. Калейдоскоп
- •Библиографический список
- •Оглавление
Введение
Введение представляет собой своеобразную рекламу проделанной работы. В нем указываются актуальность решаемой задачи, цели и задачи, достигаемые при ее решении, используемые методы решения, основное содержание работы и полученные результаты.
Анализ задания и математическая постановка задачи
В процессе анализа задания, прежде всего, нужно четко определить требуемые входные и выходные данные (переменные, массивы, константы и т.п.). Затем выяснить необходимость введения промежуточных и вспомогательных массивов переменных.
В данном разделе определяется перечень и порядок основных действий, необходимых для решения поставленной задачи. Если при этом применяются какие-либо математические методы, то кратко излагается их суть и обосновывается выбор конкретного метода. Например:
При решении поставленной задачи (см. п. 6.3) необходимо выполнить следующие действия.
Ввести значения элементов массива
.Вычислить значения элементов массива
.Напечатать значения элементов исходных матриц.
Провести транспонирование матрицы , т.е. вычислить матрицу
.
При выполнении данного пункта необходимо привести возможные методы транспонирования и обосновать выбор используемого метода.
Возвести матрицу в квадрат:
.Умножить матрицу
на матрицу
:
.Умножить матрицу на матрицу
.Из матрицы
вычесть матрицу
:
.Определить номер строки в матрице
,
сумма элементов в которой максимальна.
При выполнении пунктов 5 – 8 необходимо приводить соответствующие математические формулы.
При отладке с целью контроля вычислений после каждого указанного пункта будем производить печать матриц. Печать целесообразно реализовать с помощью подпрограммы (процедуры общего вида). Пункты 5, 6 и 7 целесообразно также оформить в виде подпрограммы умножения квадратных матриц.
Произведением двух прямоугольных матриц
,
называется матрица
С,
у которой элемент
,
стоящий на пересечении i-й строки и j-го
столбца, равен «произведению» i-й строки
первой матрицы
на j-й столбец второй матрицы
:
Если
то транспонированная матрица
определяется равенством
,
где
.
Если матрица
имеет размеры m × n, то матрица
имеет размеры n × m.
Суммой (разностью)
двух прямоугольных матриц
и
одинаковых размеров m × n называется
матрица
тех же размеров, элементы которой равны
суммам (разностям) соответствующих
элементов данной матрицы.
При нахождении
номера k строки в матрице A, сумма элементов
которой максимальна, целесообразно
ввести в рассмотрение вектор-столбец
(i=1,2,3,4). Элемент
находится в виде суммы
Номер максимального элемента массива Z – есть искомый номер k-й строки матрицы A.
Р
азработка
схемы алгоритма и ее описание
Разработка алгоритма начинается с составления укрупненной схемы, содержащей основные этапы решения поставленной задачи в виде схемы алгоритма или структурограммы. Затем производится ее детализация до такой степени, чтобы была понятна суть предлагаемого алгоритма. Каждая схема должна сопровождаться поясняющим текстом.
Например:
По результатам анализа задания можно составить укрупненную схему алгоритма последовательной структуры (рис. 1).
Проведем детализацию в последовательности, определяемой нумерацией блоков на рис. 1.
1. Ввод элементов матрицы C. В данном блоке определен ввод значений элементов квадратной матрицы C размером 44. Всего должно быть введено 16 значений.
2. Вычисление
элементов матрицы B
реализуется в виде вложенного цикла
(по параметрам i и j) и вычисления в теле
внутреннего цикла значений
по заданной формуле (рис. 2).
3
.
Печать исходных
матриц B и C (а
также отладочная печать матриц C1, C2, X,
Y и А) может быть реализована с помощью
подпрограммы.
4
.
Транспонирование
матрицы С
реализуется во вспомогательный массив
СТ по схеме, приведенной на рис. 3.
5,6,7.Умножение матриц удобно представить соответствующей подпрограммой, структурограмма которой приведена на рис. 4.
8. Вычитание матрицы Y из матрицы X представим в виде выражения над массивами следующим оператором
В программе же он должен быть реализован с помощью процедуры, обеспечивающей поэлементное вычитание матриц.
9. Нахождение строки с максимальной суммой. Сформируем одномерный массив Z (из 4-х элементов), каждый элемент которого равен сумме элементов соответствующей строки матрицы A. Для нахождения максимального элемента в массиве воспользуемся алгоритмом, структурограмма которого показана на рис. 5.
-
i=1(1)n
zi=0
j=1(1)n
zi=zi+aij
k=1; max=z1
i=2(1)n
zi>maxДа Нет
max=zi; k=i
Печать номера k строки с максимальной суммой матрицы А
Рис. 5. Структурограмма алгоритма нахождения
номера строки с максимальной суммой
3. Разработка программы и ее описание
В
данном разделе приводятся описание
этапов разработки программы, назначение
основных процедур, реализующих
предложенный алгоритм, способы их
создания и принципы компоновки в
отдельные модули.
4. Инструкция по пользованию разработанной программой
В данном разделе приводится краткая характеристика аппаратных и программных средств, используемых при решении задачи (тип и характеристика ЭВМ, операционная система и т.п.).
Указываются минимальные аппаратные и программные средства, позволяющие получить корректное решение задачи (системные требования).
Определяется наименование и местонахождение директории, содержащей программное средство, его файловый состав и наименование и способ запуска основного файла.
Далее определяются (задаются) исходные данные. Например, для рассматриваемого задания исходные значения массива С:
В
этом же разделе приводится описание
массивов и переменных в виде соответствующей
таблицы. Указывается, в каком виде должны
быть получены результаты работы
программы.
Затем подробно описываются действия оператора во время выполнения программы и возможные реакции программы на них. При этом допускается показ экранных форм.
5. Результаты отладки
В данном разделе приводятся все полученные в процессе отладки листинги программы с расшифровкой сообщений транслятора об ошибках и с указанием путей их исправления.
Например, при трансляции фрагмента программы
Var
A, B, C, C2, CT, X, Y:MatrixType;
Z:ArrayType
k, n:integer;
Max:real;
было выдано сообщение
Error 85:";" expected.
и курсор указал на 4 строку фрагмента. После анализа текста было выяснено, что в предыдущей строке отсутствует точка с запятой.
6. Решение контрольных примеров и проверка правильности функционирования программы
В данном разделе приводятся результаты, полученные при решении задачи на ЭВМ, и ручной просчет контрольного варианта. Правильность работы программы может быть подтверждена подстановкой результатов в исходные зависимости, например при решении системы уравнений.
Если программа не выдает результатов, представленных в текстовой или числовой формах, например, для графических или игровых программ, то должны быть представлены экранные формы (Screenshots), доказывающие работоспособность представленного программного продукта.
7. Текст программы и ее описание
Описание программы в общем случае содержит следующие разделы.
Общие сведения - обозначение и полное наименование программного средства: программное обеспечение, необходимое для его функционирования; языки программирования, на которых написаны программы, применение.
Функциональное назначение - классы решаемых задач и назначение ПС, сведения о функциональных ограничениях на применение.
Вызов и загрузка - способ вызова ПС с соответствующего носителя данных; входные точки в программное средство. Допускается указывать адреса загрузки, сведения об использовании оперативной памяти, объем программы.
Выходные данные - характер и организация выходных данных, формат, описание и способ кодирования выходных данных. Допускается содержание разделов иллюстрировать пояснительными примерами, таблицами, схемами, графиками.
Для рассматриваемого примера можно привести следующий текст:
Программа нахождения номера строки матрицы с максимальной суммой написана на языке Турбо Паскаль. Программа функционирует в среде Турбо Паскаль 7.0. Для выполнения программы необходимо запустить файл Matrix.pas в среде Турбо Паскаль или исполняемый файл Matrix.exe.
Исходные данные, имеющие смысл значений элементов массива, вводятся в диалоговом режиме. Вместе с этим значения элементов другого исходного массива вычисляются по заданным формулам.
В процессе получения результирующей матрицы реализованы следующие действия с массивами:
- транспонирование квадратной матрицы во вспомогательный массив;
- умножение квадратных матриц размером 44 (реализовано в виде соответствующей подпрограммы общего вида);
- вычитание квадратных матриц.
Для упрощения решения поставленной задачи сформирован вспомогательный массив, каждый элемент которого равен сумме элементов соответствующей строки результирующей матрицы. Далее, находятся максимальный элемент и его номер во вспомогательном массиве.
Каждая матричная операция сопровождается печатью соответствующего массива (печать значений элементов квадратной матрицы выполнена в виде подпрограммы).
Окончательный вариант программы имеет следующий вид:
{Программа: Matrix }
{Цель: определить номер строки, сумма элементов которой }
{ максимальна }
{Переменные: }
{ A, B, C, C2, CT, X, Y – матрицы }
{ i, j – переменные цикла }
{ k – номер строки }
{ Max – максимальная сумма элементов }
{ z – вспомогательный массив }
{Программист: Иванов И.И. гр. 9041 }
{Проверил: Петров П.П. }
{Дата написания: 4.05.2010г. }
Program Matrix;
Const
Nmax = 10;
Type
ArrayType = array[1..Nmax] of real;
MatrixType = array [1.. Nmax] of ArrayType;
MatrixName = string[2];
Var
A, B, C, C2, CT, X, Y:MatrixType;
Z:ArrayType;
k, n:integer;
Max:real;
{Процедура ввода элементов матрицы }
{Параметры: a – матрица, }
{ s – имя матрицы }
{ n – размер матрицы }
Procedure InAr(Var a:MatrixType; s:MatrixName; n:integer);
Var
i, j:byte;
begin {InAr}
WriteLn(’Введите элементы матрицы ’, s);
for i := 1 to n do {Цикл ввода элементов матрицы }
for j := 1 to n do
begin
Write(s, ’[’, i, ’,’, j, ’]=’);
read(a[i,j])
end {Цикл ввода элементов матрицы}
end; {InAr}
{Процедура формирования элементов матрицы }
{Параметры: a – матрица, }
{ s – имя матрицы }
{ n – размер матрицы }
Procedure FormAr(Var a:MatrixType; n:integer);
Var
i, j:byte;
begin {FormAr}
for i := 1 to n do
for j := 1 to n do
a[i,j]:=sin(i*pi/8+1.35)/(2.1+cos(j*pi/9+0.52));
end;{FormAr}
{Процедура вывода элементов матрицы }
{Параметры: a – матрица, }
{ s – имя матрицы }
{ n – размер матрицы }
Procedure Echo(a:MatrixType; s:MatrixName; n:integer);
Var
i, j:byte;
begin {Echo}
WriteLn(‘Матрица ‘, s);
for i := 1 to n do
begin {Цикл вывода элементов матрицы}
for j := 1 to n do
Write(a[i, j]:8:2);
WriteLn
end {Цикл вывода элементов матрицы}
end; {Echo}
{Процедура умножения матрицы a на матрицу b }
{Параметры: c – результат }
{ n – размер матриц }
Procedure MulAr(a,b:MatrixType; Var c:MatrixType; n:integer);
Var
i, j, k:byte;
s:real;
begin {MulAr}
for i := 1 to n do
for j := 1 to n do
begin {Цикл вычисления произведения матриц }
s := 0;
for k := 1 to n do
s := s + a[i ,k] * b[k, j];
c[i, j] := s
end {Цикл вычисления произведения матриц }
end;{MulAr}
{Процедура транспонирования матрицы }
{Параметры: а – исходная матрица }
{ b – транспонированная матрица }
{ n – размер матриц }
Procedure Trans(a:MatrixType; Var b:MatrixType; n:integer);
Var
i, j:byte;
s:real;
begin {Trans}
for i := 1 to n do
for j := 1 to n do
b[i,j] := a[j,i];
end; {Trans}
{Процедура вычитания матриц }
{Параметры: c – результат }
{ a – уменьшаемая матрица }
{ b – вычитаемая матрица }
{ n – размер матриц }
Procedure SubAr(a,b:MatrixType; Var c:MatrixType; n:integer);
Var
i, j:byte;
begin {SubAr}
for i := 1 to n do
for j := 1 to n do
c[i,j] := a[i,j] - b[i,j];
end;{SubAr}
{Процедура вычисления сумм элементов строк матрицы }
{Параметры: a – исходная матрица }
{ z – вектор сумм элементов строк }
{ n – размер матрицы }
Procedure SumStr(a:MatrixType; Var z:ArrayType; n:integer);
Var
i, j:byte;
begin {SumStr}
for i := 1 to n do
begin
z[i] := 0;
for j := 1 to n do
z[i] := z[i] + a[i, j]
end;
end;{SumStr}
{Процедура нахождения максимального элемента вектора }
{Параметры: z – одномерный массив }
{ n– размер вектора }
{ Max – максимальный элемент }
{ k – номер максимального элемента }
Procedure MaxEl(z:ArrayType; n:integer; Var k:integer);
Var
i:byte;
Max:real;
begin {MaxEl}
k := 1;
Max := z[1];
for i := 2 to n do
if z[i] > Max
then
begin
Max := z[i];
k := i;
end;
end;{MaxEl}
begin {Matrix}
WriteLn(’Введите размер матрицы ’);
Read(n);
WriteLn(’Введите элементы матрицы C’);
InAr(C, ’C’, n);
{Расчет матрицы B}
FormAr(B, n);
Echo(B, ’B’, n);
Echo(C, ’C’, n);
Trans(C, CT, n);
Echo(CT, ’CT’, n);
MulAr(C, C, C2, n);
Echo(C2, ’C2’, n);
MulAr(CT, B, X, n);
Echo(X, ’X’, n);
MulAr(B, C2, Y, n);
Echo(Y, ’Y’, n);
SubAr(X, Y, A, n);
Echo(A, ’A’, n);
SumStr(a, z, n);
MaxEl(z, n, k);
WriteLn(’Номер строки с максимальной суммой ’,k)
end.{Matrix}
8. Календарь выполнения работ
№ п/п |
Этапы решения задачи |
Ориентировочная трудоемкость,(ч) |
Реально затрачиваемое время, (ч) |
1 |
Анализ предметной области и формализация задачи |
8 |
6 |
2 |
Разработка структуры организации данных |
8 |
5 |
3 |
Составление алгоритма |
12 |
15 |
|
|
|
|
Продолжение таблицы |
|||
№ п/п |
Этапы решения задачи |
Ориентировочная трудоемкость,(ч) |
Реально затрачиваемое время, (ч) |
4 |
Написание программы |
8 |
6 |
5 |
Подготовка тестов |
8 |
11 |
6 |
Устранение синтаксических ошибок |
4 |
6 |
7 |
Тестирование и отладка |
24 |
21 |
8 |
Подготовка документации |
8 |
12 |
Итого: |
80 |
82 |
|
Заключение
В данном разделе подводятся итоги выполнения задания. Можно указать трудности выполнения курсовой работы, а также недостатки в организации и проведении курсовой работы, положения и предложения по улучшению курсовой работы.
7. ЗАДАНИЯ К КУРСОВОЙ РАБОТЕ
Тема 1. Работа с матрицами
(Рекомендуются в основном для студентов вечерней и заочной форм обучения)
Задание 1.1
Составить подпрограмму–функцию нахождения максимального значения элемента в одномерном массиве. Используя функцию, найти сумму максимальных элементов в первой строке матрицы В и во втором столбце матрицы
где А, В, С - квадратные матрицы размером 55.
Элементы матрицы В определить по формуле
Элементы матрицы С задать произвольно.
Задание 1.2
Составить подпрограмму-функцию нахождения минимального значения элемента в одномерном массиве. Используя функцию, найти сумму минимальных элементов в третьей строке матрицы В и в четвертом столбце матрицы
где А, В, С - квадратные матрицы размером nn.
Элементы матрицы В определить по формуле
Элементы матрицы С задать произвольно.
Задание 1.3
Составить процедуру вычисления обратной матрицы методом Жордана и с ее помощью решить системы линейных уравнений:
Задание 1.4
Составить процедуру вычисления обратной матрицы методом клеточных матриц и с ее помощью решить системы линейных уравнений:
Задание 1.5
Составить процедуру вычисления обратной
матрицы. С ее помощью найти матрицы
и определить сумму их элементов,
расположенных в нечетных строках, где
Х, H – произвольные матрицы размером n
х n.
Задание 1.6
Составить подпрограмму–функцию для
нахождения суммы элементов квадратной
матрицы, расположенных выше главной
диагонали, и определить максимальную
из указанных сумм для матриц
где
– исходные произвольно заданные матрицы
размером n х n.
Задание 1.7
Составить подпрограмму–функцию для нахождения суммы элементов квадратной матрицы, расположенных ниже главной диагонали, и определить минимальную из указанных сумм для матриц где – исходные произвольно заданные матрицы размером n х n.
Задание 1.8
Составить процедуру определения числа положительных, нулевых и отрицательных элементов произвольной квадратной матрицы. Найти суммарное количество соответствующих элементов в матрицах:
и
где
– квадратные матрицы размером n
х n, элементы которых
вычисляются по формулам:
Задание 1.9
Составить подпрограмму–функцию для нахождения суммы элементов некоторой квадратной матрицы, у которых сумма индексов является максимально нечетным числом. Используя функцию, определить указанную сумму для матриц:
Элементы матриц и задать произвольно.
Задание 1.10
Составить подпрограмму–функцию для нахождения произведения элементов некоторой квадратной матрицы, у которых сумма индексов является максимально четным числом. Используя функцию, определить указанное произведение для матриц:
Элементы матриц
и
задать произвольно.
Задание 1.11.
Составить подпрограмму–функцию
нахождения минимального элемента
главной диагонали произвольной квадратной
матрицы. Используя указанную функцию,
определить сумму минимальных элементов
главных диагоналей матриц
и
где
– исходные матрицы размером n
n.
Элементы матрицы
задаются произвольно, а элементы матрицы
вычисляются по формуле
Задание 1.12
Составить подпрограмму–функцию нахождения максимального элемента побочной диагонали произвольной квадратной матрицы. Используя указанную функцию, определить сумму максимальных элементов побочных диагоналей матриц и где – исходные матрицы размером n n.
Элементы матрицы задаются произвольно, а элементы матрицы вычисляются по формуле
Задание 1.13
Составить процедуру общего вида
упорядочения по убыванию элементов
одномерного массива. Используя процедуру,
упорядочить элементы первого столбца
произвольно заданного массива
и третьей строки матрицы
где
- квадратные матрицы размером n
n.
Элементы матриц
и
задать произвольно.
Задание 1.14
Составить процедуру общего вида
упорядочения по возрастанию элементов
одномерного массива. Используя процедуру,
упорядочить элементы второго столбца
произвольно заданного массива
и четвертой строки матрицы
где
- квадратные матрицы размером n
n.
Элементы матриц
и
задать произвольно.
Задание 1.15
Составить подпрограмму, позволяющую
поменять местами первые строки в матрицах
и
а также третьи строки в матрицах
и
.
После замены строк определить минимальный
элемент в матрице
где
- произвольно заданные матрицы.
Задание 1.16
Составить процедуру перестановки
соответствующих элементов столбцов с
номерами K и L
в квадратной матрице размером n×n.
Используя эту процедуру, поменять
местами столбцы 2 и 4 матрицы
,
вычислить матрицу
и поменять в ней местами столбцы 1 и 3,
где
- квадратная матрица размером m
m.
Элементы матрицы
задать произвольно, а элементы матрицы
вычислить по формуле
Задание 1.17
Составить процедуру перестановки
соответствующих элементов строк с
номерами K и L
в квадратной матрице размером n × n.
Используя эту процедуру, поменять
местами строки 1 и 5 матрицы
,
вычислить матрицу
и поменять в ней местами строки 2 и 4, где
- квадратная матрица размером m
m.
Элементы матрицы
задать произвольно, а элементы матрицы
вычислить по формуле
Задание 1.18.
Составить процедуру упорядочения по убыванию элементов квадратной матрицы, расположенных по строкам. Используя эту подпрограмму, найти минимальный из элементов матриц:
,
,
Элементы матрицы задать произвольно, а элементы матрицы вычислить по формуле
.
Задание 1.19
Составить процедуру упорядочения по возрастанию элементов квадратной матрицы, расположенных по столбцам. Используя эту подпрограмму, найти максимальный из элементов матриц:
,
,
Элементы матрицы задать произвольно, а элементы матрицы вычислить по формуле
.
Задание 1.20
Составить процедуру преобразования
прямоугольной матрицы размером m
n в одномерный массив в порядке следования
строк. Используя эту подпрограмму,
преобразовать исходные матрицы
и
и найти сумму минимальных элементов
этих массивов.
Элементы матрицы задать произвольно, а элементы матрицы вычислить по формуле
Тема 2. Проектирование обучающее - контролирующих программ
При проектировании обучающе-контролирующих программ следует учесть следующие рекомендации. Методический материал подбирается студентом по нескольким изучаемым темам, количество которых оговаривается в задании. В каждой теме может содержаться не менее пяти вопросов различной сложности. Программы могут быть двух типов: контролирующие и обучающе-контролирующие, которые предусматривают работу в двух режимах: 1 – контроль; 2 – обучение. В режиме контроля на вопрос предусматривается однозначный ответ, не допускающий двоякого толкования, или же производится выбор правильного ответа из нескольких предложенных, фиксируется количество верных и неверных ответов. В режиме обучения в случае неверного ответа предусматривается подсказка – выдача на экран обучающего текста. После этого вопрос задается по данной теме повторно. Вопрос может быть такой же сложности, либо проще. При этом сложность вопроса может быть учтена введением весовых коэффициентов, в которых, кроме того, отражается количество переспросов. Выбор вопроса по теме осуществляется автоматически, с использованием датчика случайных чисел.
Каждая программа данного типа должна содержать учетную информацию для преподавателя: фамилию опрашиваемого студента, количество опросов, количество верных и неверных ответов. Пороговое значение для оценки выбрать самостоятельно. Предусмотреть вывод документа с учетной информацией на устройство вывода.
