Программная реализация логических вентелей - C#
Формулировка задачи:
Здравствуйте! У меня появился вот такой вопрос!
Есть простенькая схемка, как сделать что та на подобие этого?
Можно на любом языке программирования!
Спасибо!
Решение задачи: «Программная реализация логических вентелей»
textual
Листинг программы
Button[] buttons;
Operation operation;
// Метод, который создает кнопки
public void SomeMethod()
{
int count = 3; // 3 кнопки
operation = Operation.AndNo; // К примеру операция И-НЕ
buttons = new Button[count];
for (int i = 0; i < count; i++)
{
buttons[i] = new Button
{
Text = "0",
Left = 0,
Top = 50 * i,
Width = 50,
Height = 50,
};
buttons[i].Click += new EventHandler(ButtonClick);
Controls.Add(buttons[i]);
}
// В этом месте рисуем картинку для PictureBox
label1.Text = Calculate();
}
private void ButtonClick(object sender, EventArgs e)
{
Button button = sender as Button;
if (button == null)
throw new ArgumentNullException();
button.Text = button.Text == "0" ? "1" : "0";
label1.Text = Calculate();
}
private string Calculate()
{
bool result = buttons[0].Text == "1";
for (int i = 1; i < buttons.Length; i++)
switch (operation)
{
case Operation.Or:
case Operation.OrNo:
result |= buttons[i].Text == "1";
break;
case Operation.And:
case Operation.AndNo:
result &= buttons[i].Text == "1";
break;
}
if (operation == Operation.OrNo || operation == Operation.AndNo)
result = !result;
return result ? "1" : "0";
}
enum Operation
{
Or,
And,
OrNo,
AndNo
}