Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2019, 09:17   #1
Viktoria__1994
Новичок
Джуниор
 
Регистрация: 04.11.2019
Сообщений: 3
По умолчанию Matrix объясните

Здравствуйте! Объясните вкратце по коду.
Что происходит.

Код:
using System;
using System.Collections.Generic;
 
namespace Lab4.Models
{
    public class Matrix
    {
        #region Private Fields
        private int _modulesCount;
        private int _functionsCount;
        private double _coverage;
        private static Random _rand = new Random();
        #endregion
 
        #region Properties
        public int ModulesCount
        {
            get { return _modulesCount; }
            set
            {
                if (value < 0) _modulesCount = 1;
                else _modulesCount = value;
            }
        }
 
        public int FunctionsCount
        {
            get { return _functionsCount; }
            set
            {
                if (value < 0) _functionsCount = 1;
                else _functionsCount = value;
            }
        }
 
        public double Coverage {
            get { return _coverage; }
            set
            {
                if (value < 0) _coverage = 0.5;
                else if (value > 1 && value <= 100) _coverage = value / 100;
                else _coverage = value;
            }
        }
 
        public int[,] Matrix { get; private set; }
        #endregion
 
        public MatrixLab(int functions, int modules, double coverage = 0.5)
        {
            FunctionsCount = functions;
            ModulesCount = modules;
            Coverage = coverage;
        }
 
        #region Private methods
        private int CalculateCount()
        {
            int count;
 
            count = Convert.ToInt32(ModulesCount * FunctionsCount * Coverage);
            if (count < FunctionsCount) count = FunctionsCount;
 
            return count;
        }
        #endregion
 
        #region Public methods
        public int[,] GenerateNew()
        {
            int[,] matrix = new int[ModulesCount, FunctionsCount];
            int function, module;
 
 
            List<int> modulesLeft = new List<int>();
            for (module = 0; module < ModulesCount; module++)
            {
                modulesLeft.Add(module);
            }
 
            int count = CalculateCount();
            for (function = 0; function < FunctionsCount; function++)
            {
                if (modulesLeft.Count > 0)
                {
                    module = _rand.Next(0, modulesLeft.Count);
                    matrix[modulesLeft[module], function] = 1;
                    modulesLeft.RemoveAt(module);
                } else
                {
                    module = _rand.Next(0, ModulesCount);
                    matrix[module, function] = 1;
                }
            }
 
            int toAdd = count - FunctionsCount;
            for (int i = 0; i < toAdd; i++)
            {
                do
                {
                    module = _rand.Next(0, ModulesCount);
                    function = _rand.Next(0, FunctionsCount);
                } while (matrix[module, function] == 1);
 
                matrix[module, function] = 1;
            }
 
            Matrix = matrix;
 
            return matrix;
        }
        #endregion
    }
}
______________________
Форматируйте код и используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Вадим Мошев; 04.11.2019 в 11:29.
Viktoria__1994 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
matrix c++ kosss_46 Помощь студентам 2 01.12.2016 01:42
c++ matrix tutty-frutty Общие вопросы C/C++ 1 07.02.2013 21:02
matrix legita Помощь студентам 2 23.02.2011 20:09
Matrix в Pascal ilnar21 Помощь студентам 1 17.06.2010 18:10