Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП лаба 2-3 вар 4.doc
Скачиваний:
7
Добавлен:
29.08.2019
Размер:
1.19 Mб
Скачать

Kombik.Cs

using System;

using System.Collections.Generic;

using System.Text;

namespace Laba2_3_var_4

{

//-------Задание 2 класс - комбинационный элемент------------------------

class Kombik : Element

{

//------------1---------------------------------

private byte[] menter;//значение входов

//------------------------2----------------------

//конструктор инициализирующий массив

public Kombik(string name, int enter)

: base(name, enter)

{

menter = new byte[Enter];

}

//метод устанавливающий значение на входах

public bool SetEnter(byte ch, byte pos)

{

try

{

menter[pos] = ch;

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

return false;

}

return true;

}

//метод выдающий значение на входах

public object GetEnter(byte pos)

{

try

{

return menter[pos];

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

return null;

}

}

//метод вычисляющий значение на выходе (логическая "И")

public byte GetQuit()

{

byte i = 0, p=1;

do

{

if (menter[i] == 0)

{ p = 0; break; }

i++;

}

while (i != Enter);

return p;

}

//переопределение метода equals

public override bool Equals(object obj)

{

if (obj == null || GetType() != obj.GetType())

return this == (Kombik)obj;

else return false;

}

//переопределение оператора ==

public static bool operator ==(Kombik x, Kombik y)

{

if (y.GetType() == x.GetType())

return x.menter == y.menter;

else return false;

}

//переопределение оператора !=

public static bool operator !=(Kombik x, Kombik y)

{

if (y.GetType() == x.GetType())

return !(x == y);

else return false;

}

//

public override int GetHashCode()

{

return menter.GetHashCode();

}

}

}

Laba3_Var4 Program.Cs

using System;

using System.Collections.Generic;

using System.Text;

namespace Laba2_3_var_4

{

class Program

{

//точка входа в программу

static void Main(string[] args)

{

string s, p, quiti;

int raz;

bool f = false, fl = true;

List<Reg> r = new List<Reg>();

List<Kombik> kom = new List<Kombik>();

ReadIn re = new ReadIn();

do

{

Console.Clear();

Console.WriteLine("Imitacia kombinacionnix elementov i registrov\n" +

"Viberite:\n" +

"1--Registr\n" +

"2--Kombinacionniy element\n" +

"3--Viiti"

);

s = Console.ReadLine();

switch (s)

{

case "1":

{

do

{

fl = true;

f = false;

do

{

Console.Clear();

Console.WriteLine("Vvedite razmernost registra");

raz = re.readint();

}

while (raz == 0);

byte[][] mo = new byte[raz][];

byte[] rez = new byte[raz];

r.Add(new Reg(raz));

do

{

Console.Clear();

Console.WriteLine(

"Viberite:\n" +

"1--Vvesti znachenia na vxodax registra\n" +

"2--Vivesti tekushee znachenie na vixodax\n" +

"3--Zadat razmernost registra\n" +

"4--Sbrosit znachenie registra\n" +

"5--Vivesti znachenia s opredelennogo vixoda\n" +

"6--Viiti"

);

p = Console.ReadLine();

switch (p)

{

case "1":

{

Console.Clear();

do

{

re.readmas2(mo, raz);

r[0].SetReg(mo);

Console.WriteLine("Dla vixoda iz regima vvoda dannix nagmite 'Esc'");

}

while (Console.ReadKey().Key != ConsoleKey.Escape);

break;

}

case "2":

{

Console.Clear();

rez = r[0].GetQuit();

Console.WriteLine();

for (int i = 0; i < raz; i++)

{ Console.WriteLine("Q{0}: {1}", i + 1, rez[i]); }

Console.ReadKey();

break;

}

case "6":

{

f = false;

fl = false;

break;

}

case "3":

{

fl = false;

f = true;

break;

}

case "4":

{

r[0].Reset();

break;

}

case "5":

{

Console.Clear();

Console.WriteLine("Vvedite nomer vixoda (nachinautsa s 1)");

quiti = Console.ReadLine();

Console.WriteLine("Q=" + r[0].GetIQuit(quiti));

Console.ReadKey();

break;

}

default:

{

Console.WriteLine("Vvedite odin iz predlagaemix variantov");

break;

}

}

}

while (fl);

r.Clear();

mo = null;

rez = null;

}

while (f);

break;

}

case "2":

{

do

{

do

{

Console.Clear();

Console.WriteLine("Vvedite kol-vo vxodov elementa");

raz = re.readint();

}

while (raz == 0);

kom.Add(new Kombik("sum", raz));

Console.WriteLine("Vvedite znachenia na vxodax");

for (byte i = 0; i < raz; i++)

{

Console.Write("{0}=", i + 1);

kom[0].SetEnter(re.readbyte(), i);

}

Console.WriteLine("Q={0}", kom[0].GetQuit());

Console.WriteLine("Dla vixoda nagmite 'Esc'");

}

while (Console.ReadKey().Key != ConsoleKey.Escape);

kom.Clear();

break;

}

case "3":

{

return;

}

}

}

while (true);

} }

class ReadIn

{

public void readmas2(byte[][] mo, int r)

{

byte[] m;

bool err = false;

for (int j = 0; j < r; j++)

{

m = new byte[2];

Console.WriteLine("Vvedite vxodnie znachenia dla {0} triggera", j + 1);

for (int i = 0; i < 2; i++)

{

err = false;

if (i == 0) { Console.Write("T="); }

else { Console.Write("Q(t)="); }

m[i] = Convert.ToByte(Console.ReadLine());

}

mo[j] = m;

m = null;

}

}

public int readint()

{

bool err = false;

int r = 0;

do

{

err = false;

try

{

r = Convert.ToInt32(Console.ReadLine());

}

catch (Exception e)

{

err = true;

Console.WriteLine(e.Message);

Console.ReadKey();

}

}

while (err == true);

return r;

}

public byte readbyte()

{

bool err = false;

byte r = 0;

do

{

err = false;

try

{

r = Convert.ToByte(Console.ReadLine());

if (r != 0 && r != 1) { throw new Exception(); }

}

catch (Exception e)

{

err = true;

Console.WriteLine(e.Message);

Console.ReadKey();

}

}

while (err == true);

return r;

}

}}

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