Помогите пожалуйста составить потоковый граф и цикломатическую сложность.
Код программы:
#include <iostream>
#include <cmath> // для функции sin()
using namespace std;
int main() {
setlocale(0,"");
double a = -2;
double b = 3;
double h;
cout << "Введите значение h (положительное число): ";
cin >> h;
if (h <= 0) {
cout << "Значение шага должно быть положительным." << endl;
return 0;
}
for (double x = a; x <= b; x += h) {
if (x == 0) { // проверка деления на 0
cout << "Невозможно делить на 0." << endl;
continue; // переходим к следудующей итерации цикла
}
double result = sin(2/x) + 1;
cout << "f(" << x << ") = " << result << endl;
}
Потоковый граф для данной программы можно изобразить следующим образом:
+--------------+
| Ввод данных |
+--------------+
|
v
+--------------+
| Проверка h |
+--------------+
|
v
+--------------+
| Цикл for |
+--------------+
|
v
+--------------+
| Проверка x |
+--------------+
|
v
+--------------+
| Вычисление f |
+--------------+
|
v
+--------------+
| Вывод данных |
+--------------+
Цикломатическая сложность для данной программы равна 4, так как имеется 4 логических блока: ввод данных, проверка h, цикл for и проверка x. Для ее вычисления можно использовать формулу:
V(G) = E - N + 2,
где E - количество ребер в графе, N - количество узлов в графе. В данном случае E = 6 (ребра соединяют все узлы, кроме проверки на деление на 0, которая переходит к следующей итерации), N = 4, поэтому V(G) = 6 - 4 + 2 = 4.