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

19

Задача

1.Внешняя спецификация.

1.1 условие:

Если первая строка прямоугольной матрицы имеет максимальное количество отрицательных элементов, проверить, как изменится среднее арифметическое всей матрицы, если заменить все отрицательные элементы матрицы их модулями.

1.2 состав данных.

тип

имя

смысл

структура

Диап.

Точн.

поле

Исходные данные

Вещ.

А

заданная матрица

Масс.Двум.5-стр.6-столб

|a|<=10

0.01

6

выходные данные

Вещ.

SR1

Сред. арифм. до замены

Прост. переменная

 

 

Вещ.

SR2

Сред. арифм. после замены

Прост. переменная

промежуточные данные

Цел.

Kmax

Макс. колич. отр. эл-тов в строке

Прост. переменная

 

 

 

цел.

i

№-строки

Прост. переменная

 

 

 

цел.

j

№-столбца

Прост. переменная

 

 

 

цел.

imax

Номер строки с макс кол-вом отр. эл-тов

Прост. переменная

1.3 форма ввода.

1.4 форма вывода.

Образец 1 35_ РЕЗУЛЬТАТЫ

Образец 2 25_ SR1= SR1 5_ SR2= SR2

Образец 3 10_ Наибольшее кол-во эл-тов не в первой строке

1.5/6 Метод решения задачи :

1. Сформировать массив из количеств отрицательных элементов заданной матрицы построчно

2. Определить номер максимального элемента заданного одномерного массива

3. Вычислить среднее арифметическое исходной матрицы

4. Изменить исходную матрицу

5. Вычислить среднее арифметическое измененной матрицы

1.7 Аномалии:

Не анализируются.

1.8 Тесты:

Назначение

Контрольные значения исходных данных

Контрольные значения выходных данных

1

Получение положительного результата

1 -1 -2 0 -3 -4

-1 0 0 2 -2 0

1 1 1 1 1 1

1 -2 5 1 4 3

-2 0 1 1 4 5

Результаты

SR1=0.53

SR2=1.7

2

Получение отрицательного результата

1 1 1 -1 0 0

2 2 -1 -3 -4 -5

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

Результаты

Наибольшее кол-во эл-тов не в первой строке

2. Основной алгоритм.

3. Сегменты задачи.

3.1 Сегмент 1.1

3.1.1 Внутренняя спецификация к сегменту 1.1.

1. подзадача.

Сформировать массив из количеств отрицательных элементов заданной матрицы построчно.

2. состав данных.

тип

имя

смысл

структура

Исходные данные

Вещ.

А

заданная матрица

Масс.Двум.5-стр.6-столб

выходные данные

цел.

К

Массив из количеств отр. эл-тов строк

Массив одном. 5эл.

промежуточные данные

цел.

i

№-строки

Прост. перем.

цел.

j

№-столбца

Прост. перем.

3.1.2 Вспомогательный алгоритм к сегменту 1.1.

3.2 Сегмент 1.2.

3.2.1Внутренняя спецификация к сегменту 1.2.

1. подзадача.

Определить номер максимального элемента заданного одномерного массива.

2. состав данных.

тип

имя

смысл

структура

Исходные данные

цел.

К

массив из количеств отр. эл-тов

масс.одном.5-эл.

выходные данные

цел.

imax

№-строки c max колич. отр. Эл-тов

Пр.перем

промежуточные данные

цел.

i

№- столбца

Пр.перем

цел.

n

Очередной максимальный эл-т

Пр.перем

3.2.2 Вспомогательный алгоритм к сегменту 1.2.

3.3 Сегмент 1.3.

3.3.1Внутренняя спецификация к сегменту 1.3.

1. подзадача.

Вычислить среднее арифметическое исходной матрицы

2. состав данных.

тип

имя

смысл

структура

Исходные данные

вещ.

А

Исходная матрица

масс.двум.5стр,6стол.

выходные данные

вещ.

SR1

Среднее арифм. исх. матрицы

Пр.перем

промежуточные данные

цел.

i

№-строки

Пр.перем

цел.

j

№-столбца

Пр.перем

вещ.

s

Сумма элементов матрицы

Пр.перем

3.3.2 Вспомогательный алгоритм к сегменту 1.3.

3.4 Сегмент 1.4.

3.4.1Внутренняя спецификация к сегменту 1.4.

1. подзадача.

Сформировать матрицу В путём замены всех отрицательных элементов матрицы А их модулями.

2. состав данных.

тип

имя

смысл

структура

входные данные

Вещ.

А

Исходная матрица

масс.двум. 5стр.6стол.

выходные данные

Вещ.

В

Полученная матрица

масс.двум.5стр.6стол.

промежуточные данные

цел.

i

№-строки

Пр.перем

цел.

j

№-столбца

Пр.перем

3.4.2 Вспомогательный алгоритм к сегменту 1.4.

.

4. Паскаль программа блочной структуры.

PROGRAM Z_4_3_3_v2;

TYPE MATRICA=array[1..5,1..6] of real;

MASSIV=array[1..6] of real;

VAR A,B:MATRICA;

K:MASSIV;

i,j:integer;

f1,f2:text;

Procedure MASK(Var A:MATRICA; Var K:MASSIV);

Var i,j:integer;

Begin

For i:=1 to 5 do

begin

K[i]:=0;

For j:=1 to 6 do

begin

if A[i,j]<0 then

K[i]:=K[i]+1

end

end

End;

Function STR(Var K:integer):integer;

Type MURRAY=array[1..10922] of integer;

Var i,imax,n:integer;

Begin

n:=MURRAY(K)[1];

imax:=1;

For i:=1 to 5 do

If MURRAY(K)[i]>=n Then

begin

n:=MURRAY(K)[i];

imax:=i;

end;

STR:=imax

End;

Function SRED(Var A:MATRICA):real;

Var i,j:integer;

SR,S:real;

Begin

S:=0;

For i:=1 to 5 do

For j:=1 to 6 do

S:=S+A[i,j];

SR:=S/30;

SRED:=SR

End;

Procedure NEWMATR(Var A:MATRICA;Var B:MATRICA);

Var i,j:integer;

Begin

For i:=1 to 5 do

begin

For j:=1 to 6 do

begin

If A[i,j]<0 then

B[i,j]:=abs(A[i,j])

Else

B[i,j]:=A[i,j]

end

end

End;

BEGIN

assign(f1,'isdan.pas');

assign(f2,'vdan.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;

Writeln(f2,' ':35,'Результаты');

Writeln(f2);

MASK(A,K);

If STR(K,5)=1 Then

begin

NEWMAS(A,B);

Writeln(f2,' ':20,'SR1=',SR1:6:1,' ':15,'SR2=',SR2:6:1);

end

else Write(f2, ‘Наибольшее кол-во эл-тов не в первой строке');

close(f1);

close(f2);

END.