пз_грибович / МСИС_2
.pdfМинистерство образования Республики Беларусь
Министерство образования Республики Беларусь БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Кафедра метрологии и стандартизации
Метрология, стандартизация и сертификация в информационных технологиях
Практическая работа №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 |
1. |
= |
23 |
1. |
SIZE |
17 |
2. |
[][] |
17 |
2. |
mas |
6 |
3. |
for |
9 |
3. |
minJ |
3 |
4. |
< |
1 |
4. |
new_mas |
10 |
5. |
++ |
9 |
5. |
max |
3 |
6. |
> |
1 |
6. |
maxI |
3 |
7. |
-- |
1 |
7. |
maxJ |
3 |
8. |
< |
10 |
8. |
i |
29 |
9. |
If-else-else if |
2 |
9. |
j |
26 |
10. |
<< |
1 |
10. |
8 |
1 |
11. |
>> |
19 |
11. |
0 |
13 |
12. |
|
|
12. |
-1 |
3 |
1 = 11 |
|
N1 = 93 |
2 = 12 |
|
N2 = 117 |
Словарь программы = 23. Длина программы N = 230.
Объем программы V = 230 2 23 = 1040
Метрика сложности потока данных (спен и метрика Чепина)
5 РАСЧЁТ СПЕНА ПРОГРАММЫ
Идентификат |
SIZ |
ma |
min |
new_ma |
ma |
max |
max |
i |
j |
Суммарн |
ор |
E |
s |
J |
s |
x |
I |
J |
|
|
ый спен |
|
|
|
|
|
|
|
|
|
|
программ |
|
|
|
|
|
|
|
|
|
|
ы |
Спен |
16 |
5 |
2 |
9 |
2 |
2 |
2 |
2 |
2 |
91 |
|
|
|
|
|
|
|
|
8 |
5 |
|
6 РАСЧЁТ ПОЛНОЙ МЕТРИКИ ЧЕПИНА И МЕТРИКИ ЧЕПИНА ВВОДА/ВЫВОДА
|
Полная метрика Чепина |
Метрика Чепина |
|
||||||
|
|
ввода/вывода |
|
||||||
|
|
|
|
|
|
|
|||
Группа |
Р |
М |
С |
Т |
Р |
|
М |
С |
Т |
переменных |
|
|
|
|
|
|
|
|
|
Переменные, |
-- |
SIZE, |
i,j, |
-- |
|
|
new_ |
i,j, , |
-- |
относящиеся к |
|
new_ |
minJ, |
|
|
|
mas, |
max |
|
группе |
|
mas, |
max |
|
|
|
maxI, |
|
|
|
|
maxI, |
|
|
|
|
maxJ, |
|
|
|
|
maxJ, |
|
|
|
|
mas |
|
|
|
|
mas |
|
|
|
|
|
|
|
Количество |
р = 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 |
|
|