Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет 2 кон.doc
Скачиваний:
13
Добавлен:
08.11.2019
Размер:
703.49 Кб
Скачать

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');

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]