
- •3.2 Сигмент 1.2.
- •3.2.1Внутренняя спецификация к сигменту 1.2.
- •1. Подзадача.
- •2. Состав данных.
- •3.2.2 Вспомогательный алгоритм к сигменту 1.2.
- •3.3 Сигмент 1.3.
- •3.3.1Внутренняя спецификация к сигменту 1.3.
- •1. Подзадача.
- •2. Состав данных.
- •3.3.2 Вспомогательный алгоритм к сигменту 1.3.
- •3.4 Сигмент 1.4.
- •3.4.1Внутренняя спецификация к сигменту 1.4.
- •1. Подзадача.
- •2. Состав данных.
- •3.4.2 Вспомогательный алгоритм к сигменту 1.4.
- •4. Паскаль программа блочной структуры.
- •5. Паскаль программа модульной структуры.
- •6. Тестовые данные.
- •7. Отладка программ:
- •7.1 Отладка блочной структуры программы
- •7.2 Отладка модульной структуры программы:
- •8. Тестирование:
- •8.1 Драйвер для сегмента 1
- •8.2 Драйвер для сегмента 2
- •8.3 Драйвер для сегмента 3
- •8.4 Драйвер для сегмента 4
- •В процессе тестирования были найдены синтаксические ошибки, которые были тут же локализованы и исправлены.
- •9 Рекомендации по применению:
Задача
1.Внешняя спецификация.
1.1 условие:
Изменить заданную матрицу так, что бы на первом месте стоял строка с максимальной,
а на последнем месте строка с минимальной суммой элементов, сохранив все элементы исходной матрицы.
1.2 состав данных.
тип |
имя |
смысл |
структура |
Диап. |
Точн. |
поле |
Исходные данные |
||||||
Вещ. |
а |
заданная матрица |
Масс.Двум.5-стр.6-столб |
|a|<=10 |
0.01 |
6 |
выходные данные |
||||||
Вещ. |
a |
измененный массив |
Масс.Двум.5-стр.6-столб |
|a|<=10 |
|
|
промежуточные данные |
||||||
вещ. |
b |
массив из сумм элементов строк |
масс.одном.n-эл. |
|
|
|
цел. |
i |
№-строки |
Пр.перем |
|
|
|
цел. |
j |
№-столбца |
Пр.перем |
|
|
|
цел. |
K |
Макс. значение |
Пр.перем |
|
|
|
цел. |
L |
Мин.значение |
Пр.перем |
|
|
|
1.3 форма ввода.
1.4 форма вывода.
Образец 1
Образец 2 Матрица не изменена
1.5/6 Метод рения задачи :
1. определить сумму элементов каждой строки матрицы А.
2. определить номер элемента массива В имеющего максимальное значение
3. определить номер элемента массива В имеющего минимальное значение
4. перемещение строк матрицы А
1.7 Аномалии:
Если минимальное значение стоит на первом месте, то он изменит свой номер при перемещении максимального элемента на место первой строки и доступ к нему будет потерян.
2. Алгоритм.
3. Сигменты задачи.
3.1 Сигмент 1.1
3.1.1 Внутренняя спецификация к сигменту 1.1.
1. подзадача.
определить сумму элементов каждой строки матрицы А.
2. состав данных.
тип |
имя |
смысл |
структура |
Исходные данные |
|||
Вещ. |
а |
заданная матрица |
Масс.Двум.n-стр.m-столб |
выходные данные |
|||
вещ. |
b |
массив из сумм элементов строк |
масс.одном.n-эл. |
промежуточные данные |
|||
цел. |
i |
№-строки |
Пр.перем |
цел. |
j |
№-столбца |
Пр.перем |
3.1.2 Вспомогательный алгоритм к сигменту 1.1.
3.2 Сигмент 1.2.
3.2.1Внутренняя спецификация к сигменту 1.2.
1. Подзадача.
определить номер элемента массива В имеющего максимальное значение
2. Состав данных.
тип |
имя |
смысл |
структура |
Исходные данные |
|||
вещ. |
b |
массив из сумм элементов строк |
масс.одном.n-эл. |
выходные данные |
|||
цел. |
k |
№-строки c max суммой элементов строки |
Пр.перем |
промежуточные данные |
|||
цел. |
i |
№- столбца |
Пр.перем |
цел. |
n |
№-столбца |
Пр.перем |
3.2.2 Вспомогательный алгоритм к сигменту 1.2.
3.3 Сигмент 1.3.
3.3.1Внутренняя спецификация к сигменту 1.3.
1. Подзадача.
определить номер элемента массива В имеющего минимальное значение
2. Состав данных.
тип |
имя |
смысл |
структура |
Исходные данные |
|||
вещ. |
sum |
массив из сумм элементов строк |
масс.одном.n-эл. |
цел. |
n |
число строк |
Пр.перем |
выходные данные |
|||
цел. |
inin |
№-строки c min суммой элементов строки |
Пр.перем |
промежуточные данные |
|||
цел. |
i |
№-строки |
Пр.перем |
цел. |
j |
№-столбца |
Пр.перем |
3.3.2 Вспомогательный алгоритм к сигменту 1.3.
3.4 Сигмент 1.4.
3.4.1Внутренняя спецификация к сигменту 1.4.
1. Подзадача.
перемещение строк матрицы А
2. Состав данных.
тип |
имя |
смысл |
структура |
входные данные |
|||
цел. |
z |
Первая или последняя строка |
Пр.перем |
цел. |
h |
№-строки c min или max суммой элементов строки |
Пр.перем |
Вещ. |
b |
массив состоящий из строк матоицы а |
масс.одном.n-эл. |
выходные данные |
|||
Вещ. |
a |
Измененная матрица |
Масс.Двум.n-стр.m-столб. |
промежуточные данные |
|||
цел. |
i |
№-строки |
Пр.перем |
цел. |
j |
№-столбца |
|
Вещ. |
g |
промежуточное данное между заменяемыми частями |
|
3.4.2 Вспомогательный алгоритм к сигменту 1.4.
.
4. Паскаль программа блочной структуры.
program tipovoy;
type matr=array[1..5,1..6] of real;
massiv=array[1..5] of real;
var a:matr;
b:massiv;
f1,f2:text;
i,j,k,l:integer;
v,x,y,g,h:real;
procedure nov(var a;n,m:integer;var b);
type ma=array[1..100,1..100] of real;
mas=array[1..10922] of real;
var i,j:integer;
v:real;
Begin
for i:=1 to 5 do
begin
mas(b)[i]:=0;
for j:=1 to 6 do
mas(b)[i]:=mas(b)[i]+ma(a)[i,j];
end;
End;
function max(var b;n:integer):integer;
type mas=array[1..10922] of real;
var k,i:integer;
x:real;
Begin
k:=1;
for i:=2 to 5 do
if mas(b)[k]<mas(b)[i] then
begin
mas(b)[k]:=mas(b)[i];
k:=i;
end;
max:=k;
End;
function min(var b;n:integer):integer;
type mas=array[1..10922] of real;
var l,i:integer;
y:real;
Begin
y:=mas(b)[1];
l:=1;
for i:=2 to 5 do
if y>mas(b)[i] then
begin
y:=mas(b)[i];
l:=i;
end;
min:=l;
End;
procedure verhvniz(var a;n,k,l:integer);
type ma=array[1..100,1..100] of real;
var j,h,z :integer;
g :real;
Begin
for j:=1 to 5 do
begin
g:=ma(a)[z,j];
ma(a)[z,j]:=ma(a)[h,j];
ma(a)[h,j]:=g;
end;
End;
BEGIN
assign(f1,'vdoh.pas');
assign(f2,'vidoh.pas');
reset(f1);
rewrite(f2);
for i:=1 to 5 do
begin
for j:=1 to 6 do
read(f1,a[i,j]);
readln(f1);
end;
nov(a,i,j,b);
if (max(b,k)=1) and (min(b,l)=5) then
write(f2,’матрица не изменена’)
else
begin
z:=1
h:=k
verhvniz(a,j,z,h,max(b,i));
z:=5;
h:=L
verhvniz(a,j,z,h,max(b,i));
end;
for i:=1 to 5 do
begin
for j:=1 to 6 do
write(f2,a[i,j],' ');
writeln(f2);
end;
close(f1);
close(f2);
END.