예제 #1
0
        /// <summary>
        /// Детальний імовірнісний аналіз, з виведенням про це інформації
        /// </summary>
        /// <param name="word">вхідне слово для аналізу</param>
        private static void AnaliseWithDetail(string word)
        {
            // заносимо дані для аналізу
            Analisys info = ProbabilityAnalysis(word);

            // виводимо свовіщення
            Console.WriteLine($"\n\tСлово: {word}:");
            for (int i = 0; i < info.Count; i++)
            {
                Console.WriteLine($"\t- з імовірністю {info.Probability[i] * 100:N2}% це - {info.Language[i]};");
            }
        }
예제 #2
0
        /// <summary>
        /// Виведення інформації про те до якої мови з найбільшою імовірністю належить слово
        /// </summary>
        /// <param name="word">слово для аналізу</param>
        private static void AnaliseLangWithMaxProb(string word)
        {
            // заносимо дані для аналізу
            Analisys info = ProbabilityAnalysis(word);

            // виносимо значення імовірностей
            List <double> probability = info.Probability.ToList();

            // находимо індекс першого максимального значення
            int max = probability.IndexOf(probability.Max());

            // виводимо свовіщення
            Console.WriteLine($"\n\tСлово: {word} - {info.Language[max]};");
        }
예제 #3
0
        /// <summary>
        /// Ймовірнісний аналіз букв слова, тобто до якої мови воно належить
        /// </summary>
        /// <param name="word">вхідне слово для аналізу</param>
        /// <returns></returns>
        private static Analisys ProbabilityAnalysis(string word)
        {
            // переводимо в нижній регістр, на випадок якщо цього не зроблено раніше
            word = word.ToLower();

            // створення інформаційної-структури про наявні мови і імовірність належання слова до них
            Analisys info = new Analisys()
            {
                Count    = Alphabets.Language.Count,
                Language = Alphabets.Language.ToArray()
            };

            // створюємо масив із кількості наявних мов
            // для підрахунку кількості вхідних букв
            int[] letters = new int[Alphabets.Language.Count];

            // запускаємо цикл перевірки, скільки букв належать тій чи іншій абетці
            for (int i = 0; i < letters.Length; i++)
            {
                // аналіз слова по буквах
                for (int j = 0; j < word.Length; j++)
                {
                    // якщо певна буква входить в якийсь із алфавітів, то +1
                    if (Alphabets.Alphabet[i].Contains(word[j]))
                    {
                        letters[i]++;
                    }
                }
            }

            // на виході матимемо перерахунок скільки букв і до якого алфавіту відносяться
            // виводимо імовірність до кожної з мов
            for (int i = 0; i < info.Count; i++)
            {
                info.Probability[i] = (double)letters[i] / word.Length;
            }

            return(info);
        }