Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Типовой расчет 14 вариант.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
224.77 Кб
Скачать

18

Задача

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.