Главная страница

Документ Microsoft Word (2). Лабораторная работа по теме Метрическая оценка по


Скачать 1.01 Mb.
НазваниеЛабораторная работа по теме Метрическая оценка по
АнкорMetri4eskaya ocenka
Дата04.10.2021
Размер1.01 Mb.
Формат файлаdocx
Имя файлаДокумент Microsoft Word (2).docx
ТипЛабораторная работа
#241324

Ульяновский государственный университет

Факультет математики, информационных и авиационных технологий

Кафедра Информационных технологий



Лабораторная работа по теме:


«Метрическая оценка ПО».

Выполнил: студент гр. ПРИ - 20/1

Прокопюк Я.М

Проверил: Волков М.А.





Ульяновск – 2021 г.

Метрики сложности программы

Метрика размеры программы

Метрика Холстеда

Линейная программа

Словарь операторов




Словарь операндов




While

8

cout

76

Switch

2

cin

15

file.open()

4

ios

9

file.close()

10

endl

1

file.read()

6

binary 

9

file.write()

1

app

1

Break

10

in

6

if

8

fail

51

Case

10

path

12

<<

149

duration

13

>>

11

Name

16

==

3

Author

16

<=

2

Genre

16

>=

2

Price

14

!

5

money

3

=

32

Find_music

3

&&

2

Find_price

6

&

11

Find_author

3

(char*)

7

Find_genre

6

{

36

Find_name

3

}

36

menu

6

(

75

min

3

)

75

max

1

“”

65

"1- Ввод данных \n"

1

Strcmp

3

"2 Вывод данных \n"

1

Sizeof

7

"3-Поиск по названию\n"

1

[ ]

2

"4-Выход\n"

1

Setlocale

1

"Введите цифру:"

1

;

142

" file not open "

7

n1 = 31




"Название"

7

n2 = 56




"\n Исполнитель \n"

6

N1 = 725




"\n Автор\n"

7

N2 = 378




"\n Цена\n"

7

n = 87




"\n Длительность\n"

7

N = 1103




"\n Жанр\n"

1

V = 7106.63




"Время: "

1

V* = 560.541




"Введите студию:"

1







"\n1. По названию\n"

1







"3. По жанру\n"

1







"4. По автору\n"

1







"4. По длительности\n"

1







«5. По цене\n»

1







"0. Назад\n"

1







Cout

1







Cin

7







Ios

1







Endl

1







binary 

1







App

1







In

1







Fail

9







A

6







N

6






























































Программа с указателями

Словарь операторов




Словарь операндов




while

8

cout

61

File->write()

1

cin

15

File->open()

4

ios

9

File->read()

6

endl

1

File->close()

10

binary 

9

Break

9

app

1

If

8

in

6

<<

145

fail

51

>>

11

path

12

==

3

duration

13

<=

2

Name

16

>=

2

Author

16

!

9

Genre

16

=

4

Price

14

&&

2

money

3

New

2

Find_music

3

(char*)

7

Find_price

6

{

36

Find_author

3

}

36

Find_genre

6

(

76

Find_name

3

)

76

menu

6



138

min

3

::

4

max

1

;

142

"1- Ввод данных \n"

1

,

20

"2 Вывод данных \n"

1

Strcmp

2

"3-Поиск по названию\n"

1

Sizeof

7

"4-Выход\n"

1

[ ]

1

"Введите цифру:"

1

Setlocale

1

" file not open "

7

Delete

1

"Название"

7

->

70

"\n Исполнитель \n"

6

n1 = 32




"\n Автор\n"

7

n2 = 58




"\n Цена\n"

7

N1 = 843




"\n Длительность\n"

7

N2 =360




"\n Жанр\n"

1

n = 90




"Время: "

1

N = 1203




"Введите студию:"

1

V = 7809.876




"\n1. По названию\n"

1

V* = 584.28




"3. По жанру\n"

1







"4. По автору\n"

1







"4. По длительности\n"

1







«5. По цене\n»

1







"0. Назад\n"

1







Cout

1







Cin

7







Ios

1







Endl

1







binary 

1







App

1







In

1







Fail

9







A

6







pmusic

2







kmusic

1






































Программа с модулями



Словарь операторов




Словарь операндов




if

9

cin

2

Menu()

1

a

15

Clear()

1







Write()

1







Read()

1







SearchName()

1







SearchAuthor()

1







SearchPrice()

1







SearchGenre()

1







SearchDuration()

1







SearchMenu()

1







while

9







Setlocale

1







==

9







>>

2







!

2







=

6







n1 = 17










n2 = 2










N1 = 48










N2 =17










n = 19










N = 65










V = 276.12










V* = 80.712






















МЕТРИКИ СЛОЖНОСТИ ПОТОКА УПРАВЛЕНИЯ ПРОГРАММЫ

Метрика Мак-Кейба

Линейная программа.



Z(G) = 36 - 29 + 2 = 9

Программа с указателями.



Z(G) = 39 - 30+ 2 =9


Программа с модулями.



Z(G) = 29 - 16 + 2 = 15

Метрика граничных значений

Линейная программа.







Вершины

отбора










2

4

8

Вершина перехода

3,26

5,6,7,8

9-14

Скорректированная сложность вершины

24

10

12

Вершины подграфа 

3-26

5,6,7,20-25

9-19

Нижняя граница подграфа 

26

2

2

Sa = 24+10+12+23= 69

So = 1 - 25 / 69 = 0.637

Программа с указателями.







Вершины

отбора










2

4

8

Вершина перехода

3,27

5,6,7,8

9-13

Скорректированная сложность вершины

26

10

12

Вершины подграфа 

3-27

5,6,7,20-25

9-19

Нижняя граница подграфа 

27

2

2

Sa = 26+10+12 + 24= 72

So = 1 - 26/ 72 = 0.638

Программа с модулями.









Вершины отбора







2

4

8

Вершина перехода

3,15

5,6,7,8

9-14

Скорректированная сложность вершины

14

5

6

Вершины подграфа 

3-15

5-8

9-14

Нижняя граница подграфа 

15

2

2


Sa = 14 + 5 + 6+12 = 37

So = 1 - 14 / 37 = 0.621

Линейная программа.




Код для копирования:

Тык


#include

#include

#include
using namespace std;
int main()

{

struct Videocard

{

char vendor[20];

char model[70];

double memory;

double date;

double price;

};

char path[] = "lab1.dat";

char find[70];

double find1;

double find2;

int a = 0;

Videocard List;

setlocale(LC_ALL, "ru");

fstream file;

int n = 0;

while (n != 5)

{

cout << "Меню:\n1) Ввод данных.\n2) Вывод данных.\n3) Поиск.\n4) Очистка.\n5) Выход.\nВаше действие?: ";

cin >> n;

switch (n)

{

case 1: //Ввод данных

{

file.open(path, ios::app);

if (!file)

{

cout << "file not open";

}

//Вендор

cout << "Введите вендор видеокарты: " << endl;

cin.ignore();

cin.getline(List.vendor, 20);

//модель

cout << "Введите модель: " << endl;

cin.getline(List.model, 70);

//Память

cout << "Введите объём памяти(в мб): " << endl;

cin >> List.memory;

//Цена

cout << "Введите цену видеокарты на данный момент: " << "$" << endl;

cin >> List.price;

//Дата начала производства

cout << "Введите дату начала производства(год): " << endl;

cin >> List.date;

file.write((char*)&List, sizeof(Videocard));

file.close();

}

break;

case 2: //Вывод данных

{

file.open(path, ios::in);

if (!file)

{

cout << "file not open";

}

while (file.read((char*)&List, sizeof(Videocard)))

{

cout << "Вендор: " << List.vendor << endl;

cout << "Модель: " << List.model << endl;

cout << "Память: " << List.memory << endl;

cout << "Дата начала производства: " << List.date << " г." << endl;

cout << "Цена: " << List.price << " $" << endl;

cout << endl;

}

file.close();

}

break;

case 3://Поиск

{

file.open(path, ios::in);

if (!file)

{

cout << "file not open" << endl;

}

cout << "Поиск будет осуществлен по: " << endl;

cout << "1) вендору " << endl;

cout << "2) модели " << endl;

cout << "3) объёму памяти " << endl;

cout << "4) дате начала производства " << endl;

cout << "5) цене " << endl;

cout << "9) Выйти в меню" << endl<<"Ваш выбор?: ";

cin >> a;

while (a != 9)

switch (a)

{

case 1: //вендор

{

cout << "Введите вендор: ";

cin >> find;

cout << endl;

while (file.read((char*)&List, sizeof(Videocard)))

{

if (strcmp(List.vendor, find) == 0)

{

cout << "Вендор: " << List.vendor << endl;

cout << "Модель: " << List.model << endl;

cout << "Память: " << List.memory << endl;

cout << "Дата начала производства: " << List.date << " г." << endl;

cout << "Цена: " << List.price << " $" << endl;

cout << endl;

}

}

a = 9;

file.close();

}

break;

case 2://модель

{
cout << "Введите модель: ";

cin >> find;

cout << endl;

while (file.read((char*)&List, sizeof(Videocard)))

{

if (strcmp(List.model, find) == 0)

{

cout << "Вендор: " << List.vendor << endl;

cout << "Модель: " << List.model << endl;

cout << "Память: " << List.memory << endl;

cout << "Дата начала производства: " << List.date << " г." << endl;

cout << "Цена: " << List.price << " $" << endl;

cout << endl;

}

}

a = 9;

file.close();
}

break;

case 3://объём памяти

{

cout << "Введите объём памяти(в мб) от: ";

cin >> find1;

cout << " до ";

cin >> find2;

while (file.read((char*)&List, sizeof(Videocard)))

{

if (List.memory>=find1&&List.memory <=find2)

{

cout << "Вендор: " << List.vendor << endl;

cout << "Модель: " << List.model << endl;

cout << "Память: " << List.memory << endl;

cout << "Дата начала производства: " << List.date << " г." << endl;

cout << "Цена: " << List.price << " $" << endl;

cout << endl;

}

}

a = 9;

file.close();
}

break;

case 4://дата начала производства

{

cout << "Поиск даты от ";

cin >> find1;

cout << " до ";

cin >> find2;

while (file.read((char*)&List, sizeof(Videocard)))

{

if ((List.price >= find1) && (List.price <= find2))

{

cout << "Вендор: " << List.vendor << endl;

cout << "Модель: " << List.model << endl;

cout << "Память: " << List.memory << endl;

cout << "Дата начала производства: " << List.date << " г." << endl;

cout << "Цена: " << List.price << " $" << endl;

cout << endl;

}

}

a = 9;

file.close();

}

break;

case 5://цена

{

cout << "Поиск цены от ";

cin >> find1;

cout << " до ";

cin >> find2;

while (file.read((char*)&List, sizeof(Videocard)))

{

if ((List.price >= find1) && (List.price <= find2))

{

cout << "Вендор: " << List.vendor << endl;

cout << "Модель: " << List.model << endl;

cout << "Память: " << List.memory << endl;

cout << "Дата начала производства: " << List.date << " г." << endl;

cout << "Цена: " << List.price << " $" << endl;

cout << endl;

}

}

a = 9;

file.close();
}

break;

case 6://выход

{

file.close();

break;

}

file.close();

}

break;

}

case 4: //Очистка

{

file.open(path, ios::out);

file.close();

}

break;

}

}

}
Программа с использованием указателей:






написать администратору сайта