Контрольная работа по "Дискретной математике"
Автор: Илья Филиппов • Май 2, 2023 • Контрольная работа • 8,013 Слов (33 Страниц) • 110 Просмотры
Министерство науки и высшего образования РФ
Федеральное государственное общеобразовательное учреждение
высшего образования
«Ярославский государственный технический университет»
Кафедра «Информационных систем»
Работу проверил
«__» __________ 2023
КОНТРОЛЬНАЯ РАБОТА
по курсу “Дискретная математика”
ЯГТУ 09.03.02 — 004 КР
Работу выполнил студент гр.
«__» __________ 2023
2023
[pic 1]
Алгоритм решения:
- Заполняем таблицу истинности с которой будем работать
- Для составления СДНФ проходим по строкам таблицы отбирая только те, в которых результирующий бит = 1.
- После этого проходим по выбранным строкам, соединяя их члены с помощью конъюнкции, при этом если элемент = 0 то применяем к нему инверсию.
- Затем полученные конъюнкции строк соединяем между собой дизъюнкцией.
- Для составления СКНФ проходим по строкам таблицы отбирая только те, в которых результирующий бит = 0.
- После этого проходим по выбранным строкам, соединяя их члены с помощью дизъюнкции, при этом если элемент = 1 то применяем к нему инверсию.
- Затем полученные дизъюнкции строк соединяем между собой конъюнкцией.
Текст модуля:
using System.Text.RegularExpressions;
string[] matr;
string sdnf, sknf = "";
string[] menu0 =
{
"Выберите один из двух вариантов...",
"0 - Загнать тестовую матрицу",
"1 - Ввести свою матрицу"
};
string[] menu = {
"Выберите желаемое действие...",
"1 - CДНФ",
"2 - СКНФ",
"3 - Изменить конкретную строку",
"4 - Показать таблицу истинности",
"5 - Переписать всю таблицу",
"6 - Выход из программы"
};
string? v = "";
printMenu(menu0);
while(v != "0" && v != "1")
{
v = Console.ReadLine();
}
if (v == "0")
matr = test();
else
matr = inputTable();
v = "";
printMenu(menu);
while (v != "6")
{
v = Console.ReadLine();
switch (v)
{
case "1":
sdnf = building_nf("СДНФ", matr, "1", "&&", "||");
Console.WriteLine(sdnf);
break;
case "2":
sknf = building_nf("СКНФ", matr, "0", "||", "&&");
Console.WriteLine(sknf);
break;
case "3":
matr = change(matr);
break;
case "4":
printTable(matr);
break;
case "5":
matr = inputTable();
break;
}
}
string[] inputTable()
{
string[]? _matr = new string[32];
Console.WriteLine("Вводите строки таблицы истинности в формате 'a b c d e f(a,b,c,d,e)' :");
int i = 0;
for(int a = 0; a < 2; a++)
for(int b = 0; b < 2; b++)
for(int c = 0; c < 2; c++)
for(int d = 0; d < 2; d++)
for(int e = 0; e < 2; e++)
...