
курсач 24 вариант / курсач
.docЗадание курсовой работы:
Если число нулевых элементов массива четное, то отсортировать массив в порядке возрастания, если количество положительных элементов больше или равно, чем отрицательных, а по убыванию – если меньше.
Если число нулевых элементов массива нечетное, то отсортировать массив в по-рядке убывания, если количество положительных элементов больше или равно, чем отрицательных, а по возрастанию – если меньше.
1. Структурная карта Константайна
2. Алгоритмы
3. Структурное тестирование
На рис.1 представлена схема включения тестируемого модуля, где заглушки выделены другим цветом
Рис.1
Для схемы алгоритма mainsort(А, N), составляем следующий граф передачи управления.
Граф передачи управления процедуры mainsort(А, N)
Алгоритм предусматривает два пути: 1–2–3–5, 1–2–4–5 покрывающих решения. Для прохождения указанных маршрутов формируем следующие тестовые значения переменных pos и nnull (программа ”kursach_test”):
Pos=true, nnull=4 : 1–2–3–5
Pos=true, nnull=7 : 1–2–4–5
Pos=false, nnull=2 : 1–2–4–5
Pos=false, nnull=11 : 1–2–3–5
Для пути 1–2–3–5 имеем следующий протокол работы:
1. чтение файла
2. поиск нулей, положительных и отрицательных
3. сортировка по возрастанию
5. запись файла
Для пути 1–2–4–5 имеем следующий протокол работы:
1. чтение файла
2. поиск нулей, положительных и отрицательных
3. сортировка по убыванию
5. запись файла
Текст программы на этапе структурного тестирования:
program kursach_test;
type
massiv = array[1..100] of integer;
var
N: byte;
A: massiv;
procedure reads(var A: massiv; var N: byte);
begin
writeln('1. чтение файла');
end;
procedure mainsort(var A: massiv; N: byte);
var
nnull: integer;
pos: boolean;
procedure sortvozr(var A: massiv; N: integer);
begin
writeln('3. сортировка по возрастанию');
end;
procedure sortub(var A: massiv; N: integer);
begin
writeln('4. сортировка по убыванию');
end;
procedure find(A: massiv; N: integer; var nnull: integer; var pos: boolean);
begin
pos:=true;
nnull:=15;
writeln('2. поиск нулей, положительных и отрицательных');
end;
begin{начало программы сортировки массива}
find(a, N, nnull, pos);
if odd(nnull) then
begin
if pos=true then sortvozr(A,N) else sortub(A,N);
end
else
begin
if pos=true then sortub(A,N) else sortvozr(A,N);
end;
end; {конец программы сортировки массива}
procedure writes(A: massiv; N: byte);
begin
writeln('5. запись файла');
end;
begin
reads(a, N);
mainsort(a, N);
writes(a, N);
end.