Скачиваний:
33
Добавлен:
28.03.2021
Размер:
26.43 Кб
Скачать

Министерство образования Республики Беларусь

Министерство образования Республики Беларусь

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Кафедра метрологии и стандартизации

Метрология, стандартизация и сертификация в информационных технологиях

Практическая работа №2

«Метрики Холстеда. Метрики сложности потока данных»

Вариант 16

Выполнила: Студентка группы

972303

Рушева Маргарита

Владиславовна

Проверил: Грибович Александр

Александрович

Минск, 2020

1 ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ

Ввести массив А (8, 8). Найти минимальный элемент в побочной диагонали массива А. Поменять местами столбец, в котором находится данный элемент, с первым столбцом массива А. Вывести максимальный элемент, номера строки и столбца, в которых он находится, исходный и результирующий массивы.

3 ОПИСАНИЕ ПРОГРАММЫ

  • mas – исходный массив.

  • new_mas – результирующий массив.

  • minJ – номер столбца минимального элемента побочной диагонали.

  • max – максимальный элемент результирующего массива.

  • maxI – номер строки максимального элемента.

  • maxJ – номер столбца максимального элемента.

Сначала происходит ввод данных в массив mas, затем поиск минимального элемента побочной диагонали, после чего столбец с этим элементом меняется с первым и записывается в новый массив new_mas. После выводим исходный массив. Выводим результирующий массив и одновременно ищем максимальный элемент, номер его строки и столбца. После выводим ответы.

2 ИСХОДНЫЙ ТЕКСТ ПРОГРАММЫ НА ЯЗЫКЕ С++

#include <iostream>

using namespace std;

int main()

{

const int SIZE = 8;

int mas[SIZE][SIZE];

cout << "Введите массив" << endl;

for (int i = 0; i < SIZE; i++)

{

for (int j = 0; j < SIZE; j++)

{

cin >> mas[i][j];

}

}

int min = mas[0][SIZE - 1];

int minJ = SIZE - 1;

for (int i = 0, int j = SIZE - 1; i < SIZE; i++, j--)

{

if (mas[i][j] < min)

{

min = mas[i][j];

minJ = j;

}

}

int new_mas[SIZE][SIZE];

for (int i = 0; i < SIZE; i++)

{

for (int j = 0; j < SIZE; j++)

{

new_mas[i][j] = mas[i][j];

}

int change = new_mas[i][j];

new_mas[i][0] = new_mas[i][minJ];

new_mas[i][minJ] = change;

}

for (int i = 0; i < SIZE; i++)

{

for (int j = 0; j < SIZE; j++)

{

cout << mas[i][j];

cout << " ";

}

cout << endl;

}

int max = new_mas[0][0];

int maxI, maxJ;

cout << "Новый массив" << endl;

for (int i = 0; i < SIZE; i++)

{

for (int j = 0; j < SIZE; j++)

{

cout << new_mas[i][j];

cout << " ";

if (new_mas[i][j] > max)

{

max = new_mas[i][j];

maxI = i;

maxJ = j;

}

}

cout << endl;

}

cout << "Максимальный элемент : " << max << endl;

cout << "Номер строки : " << maxI << endl;

cout << "Номер столбца : " << maxJ << endl;

}

4 РАСЧЁТ МЕТРИК ХОЛСТЕДА

j

Оператор

f1j

i

Операнд

f2i

=

23

SIZE

17

[][]

17

mas

6

for

9

minJ

3

<

1

new_mas

10

++

9

max

3

>

1

maxI

3

--

1

maxJ

3

<

10

8.

i

29

If-else-else if

2

9.

j

26

<<

1

10.

8

1

>>

19

11.

0

13

12.

-1

3

1 = 11

N1 = 93

2 = 12

N2 = 117

Словарь программы = 23.

Длина программы N = 230.

Объем программы V =

Метрика сложности потока данных (спен и метрика Чепина)

5 РАСЧЁТ СПЕНА ПРОГРАММЫ

Идентификатор

SIZE

mas

minJ

new_mas

max

maxI

maxJ

i

j

Суммарный спен программы

Спен

16

5

2

9

2

2

2

28

25

91

6 РАСЧЁТ ПОЛНОЙ МЕТРИКИ ЧЕПИНА И МЕТРИКИ ЧЕПИНА ВВОДА/ВЫВОДА

Полная метрика Чепина

Метрика Чепина ввода/вывода

Группа переменных

Р

М

С

Т

Р

М

С

Т

Переменные, относящиеся к группе

--

SIZE, new_mas, maxI, maxJ, mas

i,j, minJ, max

--

new_mas, maxI, maxJ, mas

i,j, , max

--

Количество переменных в группе

р = 0

m = 5

c = 4

t = 0

р = 0

m = 4

c = 3

t = 0

Метрика Чепина

Q = 1*0 + 2*5 + 3*4 + 0,5*0 = 22

Q = 1*0 + 2*4 + 3*3 + 0,5*0 = 17

Соседние файлы в папке пз_грибович