Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Определение метрик по модели Маккейба

Автор:   •  Март 4, 2022  •  Лабораторная работа  •  809 Слов (4 Страниц)  •  431 Просмотры

Страница 1 из 4

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«Омский государственный технический университет»

ОТЧЁТ

по дисциплине «Измерительные средства аналитики программных систем и технологий»

на тему:

«Определение метрик по модели Маккейба»

Выполнил:

Студент группы ПИ – 192

Будзинская Н.Е.

Проверил:

Зубарев А.А.

Омск 2020

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

Для метрики Маккейба необходимо построить управляющий граф линейной последовательности операторов.

[pic 1]

Рисунок 1 – Управляющий граф

Теперь необходимо посчитать количество вершин и дуг графа

Вершин –  n = 44

Дуг –  m = 61

Рассчитаем оптимальность по формуле Z = m – n + 2 = 61 – 44 + 2 = 15

15 < 10 следовательно, задача алгебраически сложнее обычного и код может быть написан боле оптимально.

Текст программы:

  1. #include "pch.h"//объявление библиотек, необходимых для успешной компиляции программы
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <iostream>
  5. #include <locale.h>
  6. using namespace std;//объявление пространства имён «std», необходимого для работы с потоками ввода вывода данных
  7. int i, j, k, n;//объявление глобальных переменных
  8. int main()//функция – точка входа в программу
  9. {        setlocale(LC_ALL, "RUS");//объявление русской локали, необходимой для корректного вывода символов кирилицы
  10. const int siz1 = 6, siz2 = 8, len1 = 3, len2 = 4;//размеры массивов
  11. int k = 1, z = 0;
  12. int A[siz1] = { 7,-9,8,1,-6,-5 },//начальные массивы
  13. B[siz2] = { -9,4,-2,20,35,-5,-7,10 };//
  14. int A2[len1],
  15. B2[len2];
  16. otrelements(A, A2, B, B2, len1, len2, siz1, siz2);//вызов функции отбора отрицательных элементов из начальных массивов
  17. printf(" Массив отрицательных элементов А2:\n");
  18. for (i = 0; i < 3; i++)//цикл вывода массива А2 из отсортированных элементов
  19. {//
  20. printf("%2d", A2[i]); //
  21. }//
  22. for (i = 0; i < len1; i++)//цикл нахождения суммы и произведения всех элементов этого массива
  23. {
  24. z += A2[i];
  25. k *= A2[i];
  26. }
  27. printf("\nCумма элементов А2 = %d\n", z); //вывод суммы
  28. printf("Произведение элементов А2 = %d\n", k); //вывод произведения
  29. printf("\n Массив отрицательных элементов B2:\n");
  30. for (i = 0; i < 4; i++)//цикл вывода массива В2 из отсортированных элементов
  31. {//
  32. printf("%d", B2[i]); //
  33. }//
  34. z = 0; //обнуление переменных для дальнейшего их использования
  35. k = 1; //
  36. for (i = 0; i < len2; i++)//цикл нахождения суммы и произведения всех элементов массива В2
  37. {//
  38. z += B2[i]; //
  39. k *= B2[i]; //
  40. }//
  41. printf("\nCумма элементов B2 = %d\n", z); //вывод суммы
  42. printf("Произведение элементов B2 = %d\n", k); //вывод произведения
  43. printf("\n Массив А(модифицированный)\n");
  44. polelements_(A, siz1); //вызов функции удаления отсортированных элементов из первого массива
  45. for (i = 0; i < 3; i++)//вывод обработанного массива через цикл
  46. {//
  47. printf("%3d", A[i]); //
  48. }//
  49. z = 0; //обнуление переменных для дальнейшего их использования
  50. k = 1; //
  51. for (i = 0; i < 3; i++)//цикл нахождения суммы и произведения всех элементов массива А
  52. {//
  53. z += A[i]; //
  54. k *= A[i]; //
  55. }//
  56. printf("\nCумма элементов А = %d\n", z); //вывод суммы
  57. printf("Произведение элементов А = %d\n", k); //вывод произведения
  58. printf("\n Массив B(модифицированный)\n");
  59. polelements(B, siz2); //вызов функции удаления отсортированных элементов из второго массива
  60. for (i = 0; i < 4; i++)//вывод обработанного массива через цикл
  61. {//
  62. printf("%3d", B[i]); //
  63. }//
  64. z = 0; //обнуление переменных для дальнейшего их использования
  65. k = 1; //
  66. for (i = 0; i < 4; i++)//цикл нахождения суммы и произведения всех элементов массива В
  67. {//
  68. z += B[i]; //
  69. k *= B[i]; //
  70. }//
  71. printf("\nCумма элементов А = %d\n", z); //вывод суммы
  72. printf("Произведение элементов А = %d\n", k); //вывод произведения
  73. }
  74. int otrelements(int* A, int * A2, int* B, int* B2, int len1, int len2, int siz1, int siz2)
  75. { //тело функции отбора отрицательных
  76. int        j = 0; //объявление переменных - счётчиков
  77. int        k = 0; //
  78. int        n = 0; //
  79. for (int i = 0; i < 8; i++)//цикл отбора отрицательных элементов в новые массивы
  80. {
  81. if (B[i] < 0) //для массива В
  82. { B2[n] = B[i]; n++; }
  83. if (j < 6) //для массива А
  84. {        if (A[j] < 0)
  85. {A2[k] = A[j]; k++;}
  86. } j++; }
  87. return 0;}
  88. int polelements(int* B, int siz2)
  89. {  //тело функции удаления отсортированных элементов из второго массива
  90. int        i = 0;
  91. int        j = 0;
  92. while (i < siz2) // цикл обработки массива
  93. { if (B[i] < 0) //поиск отрицательного элемента
  94. { for (j = i; j < siz2; j++)//
  95. B[j] = B[j + 1]; j++;// сдвиг всех последующих элементов на одну позицию назад
  96. siz2--;  }//
  97. else i++; }
  98. return siz2; }
  99. int polelements_(int* A, int siz1) //тело функции удаления отсортированных элементов из второго массива
  100. {        int i = 0;
  101. int j = 0;
  102. while (i < siz1) // цикл обработки массива
  103. {
  104. if (A[i] < 0)
  105. {
  106. for (j = i; j < siz1; j++)
  107. A[j] = A[j + 1]; //сдвиг всех последующих элементов на одну позицию назад
  108. j++; siz1--; }
  109. else i++; }
  110.  return siz1;}

...

Скачать:   txt (7.8 Kb)   pdf (133.5 Kb)   docx (44.7 Kb)  
Продолжить читать еще 3 страниц(ы) »
Доступно только на Essays.club