Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб. 4 УКПО

.docx
Скачиваний:
0
Добавлен:
25.01.2026
Размер:
441.32 Кб
Скачать

Лабораторная работа №4

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

using System;

namespace KURS_4_C_SHARP

{

class Program

{

static void Main()

{

Console.Write("Введите A: ");

string AString = Console.ReadLine();

Console.Write("Введите B: ");

string BString = Console.ReadLine();

int A, B;

bool error = false;

bool found = false;

if (!int.TryParse(AString, out A))

{

Console.WriteLine("Ошибка: Введённое значение A не является целым числом!");

error = true;

}

if (!int.TryParse(BString, out B))

{

Console.WriteLine("Ошибка: Введённое значение B не является целым числом!");

error = true;

}

if (error)

{

return;

}

if (999999 < A || A < 100000)

{

Console.WriteLine("Ошибка: Введённое значение A не является шестизначным числом!");

error = true;

}

if (999999 < B || B < 100000)

{

Console.WriteLine("Ошибка: Введённое значение B не является шестизначным числом!");

error = true;

}

if (A > B)

{

Console.WriteLine("Ошибка: Введённое значение A больше введённого значения B!");

error = true;

}

if (error)

{

return;

}

for (int num = A; num <= B; num++)

{

string s = num.ToString();

int sumFirst = (s[0] - '0') + (s[1] - '0') + (s[2] - '0');

int sumLast = (s[3] - '0') + (s[4] - '0') + (s[5] - '0');

if (sumFirst == sumLast)

{

Console.WriteLine(num);

found = true;

}

}

if (!found)

{

Console.WriteLine("Требуемых чисел нет");

}

}

}

}

Первый критерий:

Минимальный набор маршрутов, проходящих через каждый оператор ветвления и по каждой дуге:

m1 = 1-2-3-5-7-23; p1 = 3

m2 = 1-2-3-4-5-6-7-8-10-12-14-23; p2 = 7

m3 = 1-2-3-5-7-8-9-10-11-12-13-14-15-16-17-18-19-20-16-17-18-20-16-21-22-23; p3 = 13

m4 = 1-2-3-5-7-8-10-12-14-15-16-21-23; p4 = 9

Уровень сложности:

S1 = p1 + p2 + p3 + p4 = 32

Второй критерий:

Z = nв + 1 = 10 + 1 = 11

Ациклические маршруты:

m1 = 1-2-3-5-7-23; p1 = 3

m2 = 1-2-3-4-5-6-7-8-10-12-14-23; p2 = 7

m3 = 1-2-3-5-7-8-9-10-11-12-13-14-15-16-21-22-23; p3 = 9

m4 = 1-2-3-5-7-8-10-12-14-15-16-21-23; p4 = 9

Циклические маршруты:

m5 = 16-17-18-19-20; p5 = 2

Уровень сложности:

S2 = p1 + p2 + p3 + p4 + p5 = 30

Матрица смежности:

Матрица достижимости:

Вывод:

Исходя из полученных результатов расчёта метрик структурной сложности можно сделать вывод, что программа, характеризуемая представленным графом управления, имеет высокую алгоритмическую сложность, так как количество используемых в тексте операторов условий 10.

Метрика Маккейба:

Алгоритмическая сложность:

Z = m – n + 2 = 32 – 23 + 2 = 11

Вывод:

Таким образом, в соответствии со значением цикломатического числа в полученном графе управления программой можно выделить одиннадцать независимых контуров, которые определяют одиннадцать управляющих маршрутов, ведущих из начальной вершины в конечную. Значение цикломатического числа для полученного графа превышает значение 10, что говорит об очень высокой сложности разработанного алгоритма.

Соседние файлы в предмете Управление качеством программного обеспечения