Second Program.Cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Second
{
class Program
{
public static Element[] ArrElem;
public static Registr Rg;
public static Registr Reg;
public static Registr Reg2;
static void Main(string[] args)
{
ArrElem = new Element[3];
ArrElem[0] = new ComEl(6);
ArrElem[1] = new Trigger();
ArrElem[2] = new Trigger();
Rg = new Registr();
Reg = new Registr();
Reg2 = new Registr();
char Key;
do
{
Console.Clear();
Console.WriteLine("\t\tЛабораторная работа № 2");
Console.WriteLine("\n1. Использование класса: \"Комбинационный элемент\" ");
Console.WriteLine("\n2. Использование класса: \"Память\" ");
Console.WriteLine("\n3. Использование класса: \"Регистр\" ");
Console.WriteLine("\n4. Выход из приложения");
Key = Console.ReadKey(true).KeyChar;
switch (Key)
{
case '1':
{
First();
break;
}
case '2':
{
Second();
break;
}
case '3':
{
Fird();
break;
}
}
}
while (Key != '4');
}
// Реализация методов класса ComEl
public static void First()
{
ComEl r = (ComEl)ArrElem[0];
char Key;
do
{
Console.Clear();
Console.WriteLine("\t\t\tКласс: \"Комбинационный элемент\"");
Console.WriteLine("\n1.Задать значения на входах.");
Console.WriteLine("\n2.Получить значение со входа.");
Console.WriteLine("\n3. Получить значение с выхода.");
Console.WriteLine("\n4. Вернуться в меню.");
Key = Console.ReadKey().KeyChar;
switch (Key)
{
case '1':
{
Console.Clear();
Console.WriteLine("Введите значения на входах в формате ХХХХХХ, (0 - false, 1 - true):\n");
String buf;
buf = Console.ReadLine();
bool[] tmp = new bool[r.QtyInP];
try
{
for (int i = 0; i < r.QtyInP; i++)
if (buf[i] == '0')
tmp[i] = false;
else tmp[i] = true;
if (r.SetInp(tmp))
Console.WriteLine("Значения успешно установленны!");
else
Console.WriteLine("Ошибка при установки значений!");
Console.ReadKey();
}
catch (Exception e)
{
Console.WriteLine("Ошибка:" + e.Message);
}
Console.WriteLine("Для продолжения нажмите любую клавишу...");
Console.ReadKey();
break;
} // end case 1
case '2':
{
Console.Clear();
bool Error, Value;
do
{
Console.WriteLine("Введите номер входа( от 0 до " + (r.QtyInP - 1).ToString() + "):");
String In = Console.ReadLine();
if (In.Length > 1)
Console.WriteLine("Неверная разрядность числа!");
else
try
{
int a = Convert.ToInt32(In);
Value = r.GetValue(a, out Error);
Console.WriteLine("Значение на выходе " + a + ": " + Value);
}
catch (Exception e)
{
Console.WriteLine("Ошибка:" + e.Message);
}
} while (Console.ReadKey().Key != ConsoleKey.Escape);
break;
}
case '3':
{
Console.Clear();
Console.WriteLine("Значение на выходе элемента(" + r.NameP + "): " + r.Result().ToString());
Console.WriteLine("Для продолжения нажмите любую клавишу...");
Console.ReadKey();
break;
}
}
}
while (Key != '4');
} //End First
// Реализация методов класса Триггер(Память)
public static void Second()
{
char Key;
do
{
Console.Clear();
Console.WriteLine("\t\t\tКласс: \"Память\"");
Console.WriteLine("\n1.Задать значения на входах Т - триггера.");
Console.WriteLine("\n2.Получить значение со входа Т - триггера.");
Console.WriteLine("\n3. Получить значение с выхода Т - триггера.");
Console.WriteLine("\n4. Проверка метода Equals.");
Console.WriteLine("\n5. Вернуться в меню.");
Key = Console.ReadKey().KeyChar;
Trigger T = (Trigger)ArrElem[1];
Trigger T2 = (Trigger)ArrElem[2];
switch (Key)
{
case '1':
{
Console.Clear();
Console.WriteLine("Введите значение на входах в формате ХХ (0 - false, 1 - true;), \nпервый Х - значение на входе установки, второй Х - значение на входе сброса:");
string buf;
bool[] tmp2 = new bool[T.QtyInP];
try
{
buf = Console.ReadLine();
for (int i = 0; i < T.QtyInP; i++)
if (buf[i] == '0')
tmp2[i] = false;
else
tmp2[i] = true;
if (T.SetValue(tmp2))
{
Console.WriteLine("Значения на входах успешно установленны!");
}
else
Console.WriteLine("Ошибка! Значения на входах не установленны!");
}//end try
catch (Exception e)
{
Console.WriteLine("Ошибка! " + e.Message);
}
Console.WriteLine("Для продолжения нажмите любую клавишу...");
break;
}
case '2':
{
Console.Clear();
bool Error, Value;
do
{
Console.WriteLine("Введите номер входа (0 - вход установки, 1 - вход сброса):");
String buf = Console.ReadLine();
try
{
int In = Convert.ToInt32(buf);
Value = T.GetValue(In, out Error);
if (!Error)
Console.WriteLine("Значение на входе: " + Value.ToString());
else
Console.WriteLine("Входа с таким номером ен существует!");
}
catch (Exception e)
{
Console.WriteLine("Ошибка! " + e.Message);
}
Console.WriteLine("Для выхода в главное меню нажмите Escape.");
}
while (Console.ReadKey().Key != ConsoleKey.Escape);
break;
}
case '3':
{
Console.Clear();
T.Calculate();
Console.WriteLine("Значение на прямом выходе :" + T.GetOut().ToString());
Console.WriteLine("Значение на инверсном выходе :" + T.GetNOut().ToString());
Console.ReadKey();
break;
}
case '4':
{
Console.Clear();
Console.WriteLine("Введите значение на входе первого триггера в формате ХХ (0 - false, 1 - true;), \nпервый Х - значение на входе установки, второй Х - значение на входе сброса:");
string buf;
bool[] tmp2 = new bool[T.QtyInP];
try
{
// bool f = false;
buf = Console.ReadLine();
for (int i = 0; i < T.QtyInP; i++)
if (buf[i] == '0')
tmp2[i] = false;
else if (buf[i] == '1')
tmp2[i] = true;
// else { f = true; break; }
if (T.SetValue(tmp2)) //&& (f == false))
{
Console.WriteLine("Значения на входах успешно установленны!");
}
else
{
Console.WriteLine("Ошибка! Значения на входах не установленны!");
Console.WriteLine("Для продолжения нажмите любую клавишу...");
Console.ReadKey();
}
}//end try
catch (Exception e)
{
Console.WriteLine("Ошибка! " + e.Message);
Console.WriteLine("Для продолжения нажмите любую клавишу...");
Console.ReadKey();
}
T.Calculate();
// Второй триггер
Console.WriteLine("Введите значение на входе второго триггера в формате ХХ (0 - false, 1 - true;), \nпервый Х - значение на входе установки, второй Х - значение на входе сброса:");
try
{
// bool f = false;
buf = Console.ReadLine();
// Convert.ToInt32(buf);
for (int i = 0; i < T2.QtyInP; i++)
if (buf[i] == '0')
tmp2[i] = false;
else if (buf[i] == '1')
tmp2[i] = true;
//else { f = true; break; }
if (T2.SetValue(tmp2))// && (f == false))
{
Console.WriteLine("Значения на входах успешно установленны!");
}
else
{
Console.WriteLine("Ошибка! Значения на входах не установленны!");
Console.WriteLine("Для продолжения нажмите любую клавишу...");
Console.ReadKey();
}
}//end try
catch (Exception e)
{
Console.WriteLine("Ошибка! " + e.Message);
Console.WriteLine("Для продолжения нажмите любую клавишу...");
Console.ReadKey();
}
T2.Calculate();
if (T.Equals(T2))
Console.WriteLine("Триггеры равны!");
else
Console.WriteLine("Триггеры не равны!");
Console.WriteLine("Для выхода нажмите любую клавишу...");
Console.ReadKey();
break;
}
} //end switch
} while (Key != '5');
}
public static void Fird()
{
char Key;
do
{
Console.Clear();
Console.WriteLine("\tКласс \"Регистр\"");
Console.WriteLine("\n1.Задать значения на входах регистра.");
Console.WriteLine("\n2.Получить значение с заданного выхода регистра.");
Console.WriteLine("\n3.Получить значение на выходе регистра.");
Console.WriteLine("\n4. Проверка метода Equals.");
Console.WriteLine("\n5. Вернуться в меню.");
Key = Console.ReadKey().KeyChar;
switch (Key)
{
case '1':
{
Console.Clear();
Console.WriteLine("Установление значений на входе 10 Т-триггеров.");
Console.WriteLine("Введите 20 цифр (0 - false, 1 - true),\n каждая из которых будет задавать значение для одного из триггеров");
String buf;
bool[] tmp1 = new bool[20];
try
{
buf = Console.ReadLine();
for (int i = 0; i < 20; i++)
if (buf[i] == '0')
tmp1[i] = false;
else
tmp1[i] = true;
if (Rg.SetValue(tmp1))
{
Console.WriteLine("Значения успешно установленны!");
for (int i = 0; i < 20; i++)
Console.WriteLine(tmp1[i]);
}
else
{
Console.WriteLine("Ошибка! Значения не установленны!");
for (int i = 0; i < 20; i++)
Console.WriteLine(tmp1[i]);
}
}
catch (Exception e)
{
Console.WriteLine("Ошибка! " + e.Message);
}
Console.WriteLine("Для продолжения нажмите любую клавишу...");
Console.ReadKey();
break;
}
case '2':
{
Console.Clear();
bool Error, Value;
do
{
Console.WriteLine("Введите номер выхода регистра(от 0 до 9):");
String buf = Console.ReadLine();
if (buf.Length > 1)
Console.WriteLine("Триггер с таким номером не существоет");
else
try
{
int a = Convert.ToInt32(buf);
Value = Rg.GetOut(a, out Error);
if (!Error)
Console.WriteLine("Значение у выбраного триггера на выходе: " + Value.ToString());
else
Console.WriteLine("Триггер С таким номером не существует!");
}
catch (Exception e)
{
Console.WriteLine("Ошибка! " + e.Message);
}
Console.WriteLine("Для выхода нажмите ESC, для повтора нажмите любую клавишу...");
} while (Console.ReadKey().Key != ConsoleKey.Escape);
break;
}
case '3':
{
Console.Clear();
Console.WriteLine("Значение регистра: " + Rg.Result());
Console.WriteLine("Для продолжения нажмите любую клавишу...");
Console.ReadKey();
break;
}
case '4':
{
Console.Clear();
Console.WriteLine("Установление значения на входе 10 Т-триггеров.");
Console.WriteLine("Введите 20 цифр (логические 1 или 0) каждая из которых будет означать значение на входе. Лишние символы не учитываются");
String tmp;
bool[] tmp2 = new bool[20];
try
{
bool f = false;
tmp = Console.ReadLine();
for (int i = 0; i < 20; i++)
if (tmp[i] == '0')
tmp2[i] = false;
else if (tmp[i] == '1')
tmp2[i] = true;
else { f = true; break; }
if ((Reg.SetValue(tmp2) && (f == false)))
Console.WriteLine("Значения на входе регистра установлены.");
else
{
Console.WriteLine("Ошибка при установлении значений на входе.");
Console.WriteLine("Для выхода нажмите любую клавишу...");
Console.ReadKey(true);
break;
}
}
catch (Exception e)
{
Console.WriteLine("Ошибка: " + e.Message);
Console.WriteLine("Для выхода нажмите любую клавишу...");
Console.ReadKey(true);
break;
}
Reg.Result();
Console.WriteLine("\nЗадайте значения для второго регистра.\n");
// второй регистр
try
{
bool f = false;
tmp = Console.ReadLine();
for (int i = 0; i < 20; i++)
if (tmp[i] == '0')
tmp2[i] = false;
else if (tmp[i] == '1')
tmp2[i] = true;
else { f = true; break; }
if ((Reg2.SetValue(tmp2) && (f == false)))
Console.WriteLine("Значения на входе регистра установлены.");
else
{
Console.WriteLine("Ошибка при установлении значений на входе.");
Console.WriteLine("Для выхода нажмите любую клавишу...");
Console.ReadKey(true);
break;
}
}
catch (Exception e)
{
Console.WriteLine("Ошибка: " + e.Message);
Console.WriteLine("Для выхода нажмите любую клавишу...");
Console.ReadKey(true);
break;
}
Reg2.Result();
if (Reg.Equals(Reg2))
Console.WriteLine("\nРегистры равны");
else
Console.WriteLine("\nРегистры разные");
Console.WriteLine("\nДля выхода нажмите любую клавишу...");
Console.ReadKey(true);
break;
}
}
} while (Key != '4');
}
}
}