Документ Microsoft Word (2). Лабораторная работа по теме Метрическая оценка по
Скачать 1.01 Mb.
|
Ульяновский государственный университет Факультет математики, информационных и авиационных технологий Кафедра Информационных технологий Лабораторная работа по теме: «Метрическая оценка ПО». Выполнил: студент гр. ПРИ - 20/1 Прокопюк Я.М Проверил: Волков М.А. Ульяновск – 2021 г. Метрики сложности программы Метрика размеры программы Метрика Холстеда Линейная программа
Программа с указателями
Программа с модулями
МЕТРИКИ СЛОЖНОСТИ ПОТОКА УПРАВЛЕНИЯ ПРОГРАММЫ Метрика Мак-Кейба Линейная программа. Z(G) = 36 - 29 + 2 = 9 Программа с указателями. Z(G) = 39 - 30+ 2 =9 Программа с модулями. Z(G) = 29 - 16 + 2 = 15 Метрика граничных значений Линейная программа.
Sa = 24+10+12+23= 69 So = 1 - 25 / 69 = 0.637 Программа с указателями.
Sa = 26+10+12 + 24= 72 So = 1 - 26/ 72 = 0.638 Программа с модулями.
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; } } } Программа с использованием указателей: |