Лаб. 3 УКПО
.docxЛабораторная работа №3
Метрики Чепина
Код:
using System;
namespace KURS_4_C_SHARP
{
class Program
{
static int[,] CreateMatrix(int N, int M)
{
int[,] matrix = new int[N, M];
Random random = new Random();
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
matrix[i, j] = random.Next(0,2);
}
}
return matrix;
}
static List<int> CheckAlternation(int[,] matrix)
{
List<int> result = new List<int>();
for (int j = 0; j < matrix.GetLength(1); j++)
{
int prev = -1;
bool flag = true;
for (int i = 0; i < matrix.GetLength(0); i++)
{
if (matrix[i, j] == prev) { flag = false; break; }
prev = matrix[i, j];
}
if (flag) result.Add(j);
}
return result;
}
static void PrintMatrix(int[,] matrix)
{
Console.WriteLine("Двухмерный массив:");
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
Console.Write(matrix[i, j] + " ");
}
Console.WriteLine();
}
}
static void Main()
{
Console.Write("Введите количество строк: ");
string NString = Console.ReadLine();
Console.Write("Введите количество столбцов: ");
string MString = Console.ReadLine();
int N, M;
if (!int.TryParse(NString, out N)) { Console.WriteLine("Ошибка: Введённое значение для кол-ва строк не является целым числом!"); return; }
if (!int.TryParse(MString, out M)) { Console.WriteLine("Ошибка: Введённое значение для кол-ва столбцов не является целым числом!"); return; }
if (N < 1) { Console.WriteLine("Ошибка: Количество строк должно быть натуральным числом!"); return; }
if (M < 1) { Console.WriteLine("Ошибка: Количество столбцов должно быть натуральным числом!"); return; }
int[,] matrix = CreateMatrix(N, M);
List<int> result = CheckAlternation(matrix);
if (result.Count != 0)
{
Console.Write("Номера столбцов, для которых выполняется условие чередования: ");
for(int i = 0; i < result.Count; i++)
{
Console.Write($"{result[i]} ");
}
Console.WriteLine();
}
PrintMatrix(matrix);
}
}
}
Результат анализа объявленных переменных:
Расчёт метрики Чепина:
Q = 4 + 2 * 2 + 3 * 3 + 0,5 * 0 = 17
Вывод:
На основе полученных значений метрики Чепина уровень сложности данного решения можно считать сравнительно низким, так как в исходном тексте программы используется незначительное количество переменных, что не затрудняет понимание программы.
