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;
}
}}