Создание словаря на заданном алфавите с ограничениями
Заказать уникальную курсовую работу- 31 31 страница
- 4 + 4 источника
- Добавлена 05.02.2023
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
Оглавление 2
Введение 3
Основная часть 6
Глава 1. Постановка задачи 6
1.1 Индивидуальное задание 6
1.2 Цели и задачи 6
1.3 Вид рабочего окна расчётного автомата 7
Глава 2. Описание алгоритма 8
2.1 Анализ исходных данных. Конструирование интерфейса 8
2.2 Построение прототипа расчётной схемы алгоритма. Кодирование 8
Разработка алгоритма на псевдокоде 8
Выбор и анализ разработки необходимых функций и процедур (классов) 9
Укрупнённая блок-схема функций (классов) и их связи 11
Блок-схема базовых элементов алгоритма 11
2.3 Описание функций 13
Описание типа входных параметров функций и тип возвращаемого результата 13
Глава 3. Иллюстрация работы 16
3.1 Тестирование 16
3.2 Инструкция применения 17
Заключение 30
Список литературы 31
Count; i++) { if (c == alphabet[i]) aCod[k] = i; } k++; } int d = 0; bool flag = true; while (flag && d < Rules.Count) { if (Rules[d] == 1) { flag = CheckOneLetterInWord(d, aCod); } if (Rules[d] == 0) { flag = CheckNonLetterInWord(d, aCod); } if (Rules[d] < 0) { if (!CheckNonLetterInWord(d, aCod)) flag = true; } d++; } if (NonCombinationstxt.Text != "") { if (CheckCombinationsInWord(NonCombinationstxt.Text, aCod)) flag = false; } if (flag) { int[] arr = new int[myDict.Length]; for (int q = 0; q < myDict.Length; q++) { aWord += alphabet[aCod[q]]; arr[q] = aCod[q]; } aNum = NumWordCreate(aCod); myDict.Add(aWord, arr, aNum); aWord = ""; } } } else //если длина кода равна длине алфавита { if (a == alphabet.Count) { for (int i = 0; i < n; i++) { aNum = i; aWord = ""; aCod = DecimaleToAnotherSystem(i, a); int k = 0; bool flag = true; while (flag && k < Rules.Count) { if (Rules[k] == 1) { flag = CheckOneLetterInWord(k, aCod); } if (Rules[k] == 0) { flag = CheckNonLetterInWord(k, aCod); } if (Rules[k] < 0) { if (!CheckNonLetterInWord(k, aCod)) flag = true; } k++; } if (NonCombinationstxt.Text != "") { if (CheckCombinationsInWord(NonCombinationstxt.Text.ToUpper(), aCod)) flag = false; } if (flag) { for (int j = 0; j < myDict.Length; j++) { aWord += alphabet[aCod[j]]; } myDict.Add(aWord, aCod, aNum); } } } } } private void FillAlphabet(string str){ //заполнения алфавита string aWord = str; foreach (char c in aWord) { alphabet.Add(c); } } private void FillDegrees(int a){ //заполнение списка степеней for (int i = 0; i < a; i++) { Degrees.Add((long)Math.Pow(alphabet.Count, i)); } } private void button1_Click(object sender, EventArgs e){ //ввод алфавита и вывод на экран алфавита, степеней и начальных правил try { Len = Convert.ToInt32(CodLengthtxt.Text); } catch (FormatException) { Len = 5; } myDict = new Dictionary(Len); if (Wordtxt.Text != "") { AlphabetdGV.Columns.Clear(); AlphabetdGV.ColumnCount = 0; DegreedGV.Columns.Clear(); DegreedGV.ColumnCount = 0; RulesLettersdGV.Columns.Clear(); RulesLettersdGV.ColumnCount = 0; AlphabetdGV.Visible = true; DegreedGV.Visible = true; RulesLettersdGV.Visible = true; label12.Visible = true; alphabet.Clear(); Degrees.Clear(); int i = 0; string aWord = Wordtxt.Text.ToUpper(); FillAlphabet(aWord); foreach (char c in aWord) { AlphabetdGV.Width = 30 * (i + 1); RulesLettersdGV.Width = 30 * (i + 1); AlphabetdGV.Columns.Add(i.ToString(), ""); AlphabetdGV.Columns[i].Width = 30; AlphabetdGV.Rows[0].Cells[i].Value = alphabet[i]; RulesLettersdGV.Columns.Add(i.ToString(), ""); RulesLettersdGV.Columns[i].Width = 30; RulesLettersdGV.Columns[i].HeaderText = alphabet[i].ToString(); RulesLettersdGV.Rows[0].Cells[i].Value = -1; i++;} FillDegrees(Len); if (Len <= alphabet.Count) { for (int k = 0; k < Len; k++) { DegreedGV.Width = 35 * (k + 1); DegreedGV.Columns.Add(i.ToString(), ""); DegreedGV.Columns[k].Width = 35; DegreedGV.Rows[0].Cells[k].Value = Degrees[Len - (k + 1)]; } } else { MessageBox.Show("Введите длину кода меньшую или равную длине алфавита!"); } } else MessageBox.Show("Введите слово!"); } private void button3_Click(object sender, EventArgs e) { //Вызывает генерацию словаря, если длина кода введена if (CodLengthtxt.Text != "") { label13.Visible = true; MessageBox.Show("Идёт генерация словаря..."); GenerateDict(Convert.ToInt32(CodLengthtxt.Text)); OutLists(); label13.Visible = false; } else MessageBox.Show("Введите длину кода!"); } private void Dive(string prefix, int level){ //рекурсивная процедура генерации всех возможных комбинаций из букв алфавита заданной длины level += 1; foreach (char c in ValidChars) {if ((prefix + c).Length==Len) { combo.Add(prefix + c); } if (level < Len) { Dive(prefix + c, level); } } } private void button2_Click(object sender, EventArgs e){ //вывод на экран количества слов в словаре string s = "Возможных комбинаций слов в соответствии с заданными правилами может быть получено " + myDict.Words.Count.ToString(); MessageBox.Show(s); } private void button4_Click(object sender, EventArgs e){ //выход из программы this.Close(); } }}ЗаключениеВ процессе выполнения курсового проекта были получены следующие результаты:Разработана программа, выполняющая генерацию слов из заданного алфавита с заданными правилами и вывод их на экран (вместе с кодами слова и их численным выражением. В процессе тестирования алгоритм исследован на быстродействие и универсальность (независимость от введенного алфавита и правил составления слов). Алгоритм генерации словаря исследован на его возможность применения с алфавитом, длина которого превышает длину слова в словаре. В результате исследования был сделан вывод, что исследуемый алгоритм не сможет работать при таких входных данных, и был разработан альтернативный алгоритм, основанный на рекурсивной процедуре формирования слов из заданного алфавита. Рекурсивный алгоритм позволяет работать с более длинным алфавитом при условии достаточно короткого слова, поскольку тоже основан на переборе комбинаций.Сделан вывод, что программа может использоваться для подсчета количества комбинаций на словах, имеющих не более 7 символов в алфавите.В результате написания и реализации проекта автором были получены новые знания, умения и навыки в рамках следующих обще-профессиональных компетенций:Решать стандартные задачи профессиональной деятельности на основе информационной и библиографической культуры с применением информационно-коммуникационных технологий и с учетом основных требований информационной безопасности.Осуществлять поиск, критический анализ и синтез информации, применять системный подход для решения поставленных задач.Разрабатывать алгоритмы и программы, пригодные для практического применения.Список литературыБелов, В. В. Алгоритмы и структуры данных : учебник / В. В. Белов, В. И. Чистякова. – Москва : КУРС: ИНФРА-М, 2020. – 240 с. Гущин Д. Д. Руководитель редакции сайта РЕШУ ЕГЭ. – URL:https://inf-ege.sdamgia.ru/test?a=catlistwstat(дата обращения 4 декабря 2022 г.).Документация по C# – URL: https://docs.microsoft.com/ru-ru/dotnet/csharp/(дата обращения 5 декабря 2022 г.).Казанский А.А. Программирование на Visual C# 2013: учеб.пособие для СПО / А.А. Казанский.- М.: Издательство Юрайт, 2019. – 191 с.Колдаев, В. Д. Основы алгоритмизации и программирования : учебное пособие / В.Д. Колдаев ; под ред. проф. Л.Г. Гагариной. – Москва : ФОРУМ : ИНФРА-М, 2019. – 416 с. Перевод числа из 10-й системы счисления в любую другую по 9-ю. – URL: https://zedpost.ru/188-perevod-chisla-iz-10-y-sistemy-schisleniya-v-lyubuyu-druguyu-po-9-yu.html(дата обращения 4 декабря 2022 г.).Практика программирования на С# для Windows и Web в Microsoft Visual Studio. – URL:http://wladm.narod.ru/C_Sharp/index.html (дата обращения 5 декабря 2022 г.).BinDecHex – URL: https://wikiprograms.org/bindechex/(дата обращения 4 декабря 2022 г.).
Белов, В. В. Алгоритмы и структуры данных : учебник / В. В. Белов, В. И. Чистякова. – Москва : КУРС: ИНФРА-М, 2020. – 240 с.
Гущин Д. Д. Руководитель редакции сайта РЕШУ ЕГЭ. – URL:https://inf-ege.sdamgia.ru/test?a=catlistwstat (дата обращения 4 декабря 2022 г.).
Документация по C# – URL: https://docs.microsoft.com/ru-ru/dotnet/csharp/ (дата обращения 5 декабря 2022 г.).
Казанский А.А. Программирование на Visual C# 2013: учеб. пособие для СПО / А.А. Казанский.- М.: Издательство Юрайт, 2019. – 191 с.
Колдаев, В. Д. Основы алгоритмизации и программирования : учебное пособие / В.Д. Колдаев ; под ред. проф. Л.Г. Гагариной. – Москва : ФОРУМ : ИНФРА-М, 2019. – 416 с.
Перевод числа из 10-й системы счисления в любую другую по 9-ю. – URL: https://zedpost.ru/188-perevod-chisla-iz-10-y-sistemy-schisleniya-v-lyubuyu-druguyu-po-9-yu.html (дата обращения 4 декабря 2022 г.).
Практика программирования на С# для Windows и Web в Microsoft Visual Studio. – URL:http://wladm.narod.ru/C_Sharp/index.html (дата обращения 5 декабря 2022 г.).
BinDecHex – URL: https://wikiprograms.org/bindechex/ (дата обращения 4 декабря 2022 г.).
Вопрос-ответ:
Какие цели и задачи ставятся при создании словаря на заданном алфавите?
Основная цель создания словаря - установление соответствия между словами и их значениями на заданном алфавите. Задачи включают постановку задачи, разработку алгоритма, конструирование интерфейса, построение прототипа расчетной схемы, кодирование и разработку необходимых функций и процедур.
Какова структура рабочего окна расчетного автомата?
Рабочее окно расчетного автомата имеет следующую структуру: оглавление, основная часть, главы, подразделы. Оглавление содержит перечень всех глав и подразделов, а основная часть содержит текст статей.
Как происходит построение прототипа расчетной схемы алгоритма?
Построение прототипа расчетной схемы алгоритма включает в себя анализ исходных данных, конструирование интерфейса и разработку алгоритма на псевдокоде. Эти шаги позволяют определить структуру и взаимосвязи элементов схемы, а также учесть все требования и ограничения.
Какие функции и процедуры необходимо разработать при создании словаря?
Для создания словаря необходимо разработать функции и процедуры классов, которые обеспечат функциональность и работу словаря. Это может включать функции поиска, добавления и удаления слов из словаря, функции сортировки и фильтрации, а также процедуры для отображения и обновления данных.
Какие этапы включает разработка алгоритма на псевдокоде для создания словаря?
Разработка алгоритма на псевдокоде включает в себя выбор и анализ разработки необходимых функций и процедур классов, которые будут использоваться в словаре. Затем происходит разработка структуры алгоритма с учетом всех требований и ограничений. На последнем этапе происходит кодирование алгоритма на выбранном языке программирования.
Зачем создавать словарь на заданном алфавите с ограничениями?
Создание словаря на заданном алфавите с ограничениями позволяет организовать и структурировать информацию таким образом, чтобы она была доступна и удобна в использовании. Ограничения могут включать ограничение на количество символов в слове, использование определенных символов и т. д. Это помогает оптимизировать процессы поиска и сокращает использование памяти.
Какую задачу решает создание словаря на заданном алфавите?
Создание словаря на заданном алфавите позволяет упорядочить и организовать информацию в заданной системе или структуре. Это упрощает поиск, сопоставление и классификацию слов или терминов, а также обеспечивает быстрый доступ к нужной информации. Такой словарь может использоваться в различных областях, включая лингвистику, программирование, анализ данных и другие.
Какие ограничения могут быть на словарь?
Ограничения на словарь могут быть различными. Например, можно ограничить количество символов в слове, разрешить использование только определенных символов или задать ограничение на количество слов в словаре. Также могут быть установлены правила для добавления новых слов или удаления существующих. Ограничения зависят от конкретной задачи и требований пользователя.