- •Порядок выполнения работы
- •Содержание пояснительной записки
- •Задание №1.
- •Вариант 0.
- •Вариант 1.
- •Вариант 2.
- •Вариант 12.
- •Вариант 19.
- •Вариант 21.
- •Вариант 22.
- •Задание №2.
- •Варианты
- •Задание №3.
- •Задание №4.
- •Варианты
- •Задание №5.
- •Список использованной и рекомендуемой литературы
- •Вариант 0. Задание 1.1
- •1. Постановка задачи
- •2. Теоретическое введение
- •3. Описание программы
- •Задание 1.2
- •1. Постановка задачи
- •2. Теоретическое введение
- •3. Описание программы
- •3.6. Тестовые примеры
- •3.7. Интерфейс программы в режиме выполнения
- •Задание 2
- •1. Постановка задачи
- •2. Теоретическое введение
- •3. Описание программы
- •3.1. Описание логической структуры программы.
- •3.6. Тестовые примеры
- •3.7. Интрфейс программы в режиме выполнения
- •Задание 3.
- •1. Постановка задачи
- •2. Теоретическое введение
- •3. Описание программы
- •3.6. Тестовые примеры
- •3.7. Интерфейс программы в режиме выполнения
- •Задание 4.
- •1. Постановка задачи
- •2. Теоретическое введение
- •3. Описание программы
- •3.1. Описание логической структуры программы.
- •3.6. Тестовые примеры
- •3.7. Интерфейс программы в режиме выполнения
- •Задание 5.
- •1. Постановка задачи
- •2. Теоретическое введение
- •3. Описание программы
- •3.1. Описание логической структуры программы.
- •3.2 Описание входных данных
- •3.4. Описание выходных данных
- •3.5. Описание программы (листинг)
- •3.6. Тестовые примеры
- •3.7. Интерфейс программы в режиме выполнения
- •Отображение всех студентов до сортировки
- •Отображение всех студентов до сортировки
- •Список использованной литературы
3.6. Тестовые примеры
Необходимо протестировать программу для различных тестовых примеров (подобрать самостоятельно).
3.7. Интерфейс программы в режиме выполнения
Результаты работы программы выглядят следующим образом:
Задание 5.
1. Постановка задачи
В соответствии с вариантом написать программу, позволяющую с помощью меню:
-
Создавать одномерный массив записей;
-
Просматривать содержимое массива на экране монитора в виде таблицы;
-
Производить поиск данных в массиве по указанному значению ключевого поля.
-
Сортировать записи в массиве по одному из казанных значений ключевого поля.
Программа должна иметь простой интерфейс, позволяющий выбрать необходимое действие. Реализовать программу в процедурном стиле программирования.
Данные в структуре нулевого варианта:
-
Поля данных: Фамилия И.О. студента, № группы, Успеваемость (массив из 5 оценок). Ключевые поля: № группы, Успеваемость (средний балл).
2. Теоретическое введение
(самостоятельно)...
3. Описание программы
Программа написана на алгоритмическом языке ПАСКАЛЬ и реализована в среде Borland Pascal-7.0 Windows XP/MS DOS, на платформе х86.
3.1. Описание логической структуры программы.
Для решения задачи необходимо:
-
Организовать необходимые процедуры и функции:
-
Read_Student – для ввода данных о студенте;
-
Write_Student – для вывода данных о студенте;
-
Menu – для организации интерфейса пользовательского меню;
-
Find(key) – для поиска по определенному условию выборки (key – целочисленный параметр определяющий вид поиска: =1 – выборка студентов по указанному номеру группы; =2 – выборка студентов "по успеваемости");
-
Menu – для организации интерфейса пользовательского меню;
-
Sort – сортировка студентов по фамилии в алфавитном порядке;
-
-
Организовать в основной программе пользовательский интерфейс в виде циклически предлагаемого выбора процедур, соответствующих пунктам пользовательского меню
3.2 Описание входных данных
Student = record
FIO :String;
Number :Integer;
Bal :array[1..5]of Byte;
end;
– определение типа "Студент"
A: array [1..10] of Student – массив из элементов типа "Студент"
count – количество студентов в массиве – переменная типа Integer;
3.4. Описание выходных данных
Вывод на экран результатов выборок из массива А
3.5. Описание программы (листинг)
Program ZAD_5;
uses
Crt;
const
Nmax=10;
type
Student = record
FIO :String;
Number :Integer;
Bal :array[1..5]of Byte;
end;
var
A :array [1..Nmax] of Student;
n,num,i,count :integer;
Procedure Read_Student(var s :Student);
var i:integer;
begin
writeln;
writeln('=== Ввод студента ===');
write(' ФИО: '); readln(s.FIO);
write(' №гр: '); readln(s.Number);
for i:=1 to 5 do
begin
write(' оценка ',i,': '); readln( s.Bal[i] );
end;
writeln('==== ok.');
end;
Procedure Write_Student( s :Student);
var i:integer;
begin
write(' ', s.FIO, ' гр ', s.Number, ' оценки: ');
for i:=1 to 5 do
write(s.Bal[i], ' ' );
writeln;
end;
function Menu :integer;
var c:char; n,code:integer;
begin
ClrScr;
repeat
writeln;
writeln('*****************************');
writeln('* 1. Добавить студента *');
writeln('* 2. Показать всех *');
writeln('* 3. Выборка по № группы *');
writeln('* 4. Выборка по ср.баллу *');
writeln('* 5. Сортировать по ФИО *');
writeln('* 6. Выход *');
writeln('*****************************');
write('выбери пункт меню: ');readln(c);
val(c,n,code);
until (c in ['1'..'6'])and(code=0) ;
ClrScr;
Menu:=n;
end;
Procedure Find(key:integer);
var
gr,k,i,j :integer;
b,sb :real;
begin
case key of
1: {поиск по № группы}
begin
write('Введи № группы для выборки: ');
readln(gr);
writeln;
writeln('Список студентов гр.№ ',gr);
writeln('-------------------------------------------');
k:=0;
for i:=1 to count do
if A[i].Number=gr then
begin
k:=k+1;
write(k,'. '); Write_Student(A[i]);
end;
writeln('-------------------------------------------');
writeln('найдено записей: ',k);
end;
2: поиск по успеваемости}
begin
write('Введи средний балл: ');
readln(b);
writeln;
writeln('Список студентов, чей средний балл > ',b);
writeln('-------------------------------------------');
k:=0;
for i:=1 to count do
begin
sb:=0;
for j:=1 to 5 do sb:=sb+ A[i].Bal[j];
sb:=sb/5;
if sb >= b then
begin
k:=k+1;
write(k,'. (',sb:3:2,') ');
Write_Student(A[i]);
end;
end;
writeln('-------------------------------------------');
writeln(' найдено записей: ',k);
end;
end;
end;
procedure Sort;
var
i,j:integer;
s:Student;
begin
for j:=0 to count-2 do
for i:=2 to count-j do
if a[i-1].FIO > a[i].FIO then
begin s:=a[i-1]; a[i-1]:=a[i]; a[i]:=s; end;
end;
Begin
count:=0;
repeat
num:=Menu;
case num of
1:
begin
count:=count+1;
if count>Nmax then
begin
writeln('Массив переполнен');
count:=count-1;
end
else
Read_Student(A[count]);
write('нажми Enter для продолжения');readln;
end;
2:
begin
writeln;
if count=0 then writeln('Массив пуст');
writeln('Список всех студентов');
writeln('-------------------------------------');
for i:=1 to count do
begin
write(i,'. '); Write_Student(A[i]);
end;
writeln('-------------------------------------');
write('нажми Enter для продолжения');readln;
end;
3:
begin
Find(1);
write('нажми Enter для продолжения ');readln;
end;
4:
begin
Find(2);
write('нажми Enter для продолжения ');readln;
end;
5:
begin
Sort;
end;
end;
until num=6;
{readln;}
End.