Горизонтальне елімінування унітермів
Допоможіть з кодом програми не мажу розібратися як зробити за допомогою мови програмування C# в Visual Studio 2015 операцію заміни унітерму горизонтального елімінування унітермів операцією горизонтального елімінування.
P. S. Додаю код програми горизонтального секвентування унітерму горизонтальним паралеленням
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1
{
/// <summary>
/// Логика взаимодействия для Window1.xaml
/// </summary>
public partial class Window1 : Window
{
String Uniterm1, Uniterm2, Rozd = ",";
Canvas parCanvas, sekvCanvas, temp;
int i;
Label lbTemp, lU1, lU2, lRoz;
public Window1()
{
InitializeComponent();
}
private void r1_Checked(object sender, RoutedEventArgs e)
{
Rozd = ",";
}
private void r2_Checked(object sender, RoutedEventArgs e)
{
Rozd = ";";
}
private void Sekv_Click(object sender, RoutedEventArgs e)
{
if ((U1.Text != "") & (U2.Text != ""))
{
Uniterm1 = U1.Text;
Uniterm2 = U2.Text;
Label l1 = new Label();
l1.Content = Uniterm1;
l1.MinWidth = 20;
l1.FontSize = 14;
l1.Width = l1.Content.ToString().Length * (l1.FontSize / 2 + 3.5);
l1.MouseDown += new MouseButtonEventHandler(l1_MouseDown);
lU1 = l1;
Label l2 = new Label();
l2.Content = Uniterm2;
l2.MinWidth = 20;
l2.FontSize = 14;
l2.Width = l2.Content.ToString().Length * (l2.FontSize / 2 + 3.5);
l2.MouseDown += new MouseButtonEventHandler(l2_MouseDown);
lU2 = l2;
Label lr = new Label();
lr.FontSize = 14;
lr.Content = Rozd;
lr.Width = lr.Content.ToString().Length * lr.FontSize;
lRoz = lr;
OperSekv(l1, l2, lr);
}
else
{
MessageBox.Show("Введіть унітерми в текстові поля", "Попередження");
}
}
void l1_MouseDown(object sender, MouseButtonEventArgs e)
{
if (i == 2)
{
lbTemp.Background = null;
}
Label lb = (Label)sender;
lb.Background = Brushes.Blue;
i = 1;
lbTemp = lb;
}
void l2_MouseDown(object sender, MouseButtonEventArgs e)
{
if (i == 1)
{
lbTemp.Background = null;
}
Label lb = (Label)sender;
lb.Background = Brushes.Blue;
i = 2;
lbTemp = lb;
}
private void OperSekv(Control a, Control b, Control c)
{
sekvCanvas = new Canvas();
Canvas.SetTop(a, 30);
Canvas.SetLeft(a, 20);
Canvas.SetTop(c, 30);
Canvas.SetLeft(c, Canvas.GetLeft(a) + a.Width + 5);
Canvas.SetTop(b, 30);
Canvas.SetLeft(b, Canvas.GetLeft(c) + c.Width + 5);
sekvCanvas.Children.Add(a);
sekvCanvas.Children.Add(b);
sekvCanvas.Children.Add(c);
PathFigure pfigure = new PathFigure();
pfigure.StartPoint = new Point(14, 33);
BezierSegment bs = new BezierSegment();
bs.Point1 = new Point(14, 33);
bs.Point2 = new Point(Canvas.GetLeft(c)+c.Width/2, 0);
bs.Point3 = new Point(Canvas.GetLeft(b)+b.Width+7,33);
PathSegmentCollection pcol = new PathSegmentCollection();
pcol.Add(bs);
pfigure.Segments = pcol;
PathFigureCollection pfcol = new PathFigureCollection();
pfcol.Add(pfigure);
PathGeometry pg = new PathGeometry();
pg.Figures = pfcol;
Path p = new Path();
p.Stroke = Brushes.Black;
p.StrokeThickness = 2;
p.Data = pg;
sekvCanvas.Children.Add(p);
Canvas.SetLeft(sekvCanvas, 30);
Canvas.SetTop(sekvCanvas, 30);
table.Children.Add(sekvCanvas);
}
private void OperParl(Control a, Control b, Control c)
{
parCanvas = new Canvas();
Canvas.SetTop(a, 60);
Canvas.SetLeft(a, 40);
Canvas.SetTop(c, 60);
Canvas.SetLeft(c, Canvas.GetLeft(a) + a.Width + 5);
Canvas.SetTop(b, 60);
Canvas.SetLeft(b, Canvas.GetLeft(c) + c.Width + 5);
parCanvas.Children.Add(a);
parCanvas.Children.Add(b);
parCanvas.Children.Add(c);
PathFigure pfigure = new PathFigure();
pfigure.StartPoint = new Point(Canvas.GetLeft(a), 60);
BezierSegment bs = new BezierSegment();
bs.Point1 = new Point(Canvas.GetLeft(a), 60);
bs.Point2 = new Point(Canvas.GetLeft(c) + c.Width/2, 45);
bs.Point3 = new Point(Canvas.GetLeft(b) + b.Width, 60);
PathSegmentCollection pcol = new PathSegmentCollection();
pcol.Add(bs);
pfigure.Segments = pcol;
PathFigureCollection pfcol = new PathFigureCollection();
pfcol.Add(pfigure);
PathGeometry pg = new PathGeometry();
pg.Figures = pfcol;
Path p = new Path();
p.Stroke = Brushes.Black;
p.StrokeThickness = 2;
p.Data = pg;
parCanvas.Children.Add(p);
Canvas.SetLeft(parCanvas, 30);
Canvas.SetTop(parCanvas, 60);
table.Children.Add(parCanvas);
}
private void Paral_Click(object sender, RoutedEventArgs e)
{
if ((U1.Text != "") & (U2.Text != ""))
{
Uniterm1 = U1.Text;
Uniterm2 = U2.Text;
Label l1 = new Label();
l1.Content = Uniterm1;
l1.MinWidth = 20;
l1.FontSize = 14;
l1.Height = 28;
l1.Width = l1.Content.ToString().Length * (l1.FontSize / 2 + 3.5);
Label l2 = new Label();
l2.Content = Uniterm2;
l2.MinWidth = 20;
l2.FontSize = 14;
l2.Height = 28;
l2.Width = l2.Content.ToString().Length * (l2.FontSize / 2 + 3.5);
Label lr = new Label();
lr.FontSize = 14;
lr.Content = Rozd;
lr.Width = lr.Content.ToString().Length * lr.FontSize;
lr.Height = 28;
OperParl(l1, l2, lr);
}
else
{
MessageBox.Show("Введіть унітерми в текстові поля", "Попередження");
}
}
private void Zamina_Click(object sender, RoutedEventArgs e)
{
Double a = 0;
sekvCanvas.Children.Remove(lU1);
sekvCanvas.Children.Remove(lU2);
sekvCanvas.Children.Remove(lRoz);
sekvCanvas = new Canvas();
temp = parCanvas;
table.Children.Remove(temp);
table.Children.Clear();
if (i == 1)
{
Canvas.SetTop(temp, 15);
Canvas.SetLeft(temp, 0);
sekvCanvas.Children.Add(temp);
Canvas.SetTop(lRoz, 60);
Canvas.SetLeft(lRoz, Canvas.GetLeft(temp) +140);
sekvCanvas.Children.Add(lRoz);
Canvas.SetTop(lU2, 60);
Canvas.SetLeft(lU2, Canvas.GetLeft(lRoz) + 50);
sekvCanvas.Children.Add(lU2);
a = 250;
}
if (i == 2)
{
Canvas.SetTop(lU1, 60);
Canvas.SetLeft(lU1, 20);
sekvCanvas.Children.Add(lU1);
Canvas.SetLeft(lRoz, Canvas.GetLeft(lU1) + lU1.Width );
Canvas.SetTop(lRoz, 60);
sekvCanvas.Children.Add(lRoz);
Canvas.SetTop(temp, 0);
Canvas.SetLeft(temp, Canvas.GetLeft(lRoz) + lRoz.Width/3);
sekvCanvas.Children.Add(temp);
a = 150 + Canvas.GetLeft(temp);
}
PathFigure pfigure = new PathFigure();
pfigure.StartPoint = new Point(14, 60);
BezierSegment bs = new BezierSegment();
bs.Point1 = new Point(14, 55);
bs.Point2 = new Point((14+a)/2+25, 25);
bs.Point3 = new Point(a, 55);
PathSegmentCollection pcol = new PathSegmentCollection();
pcol.Add(bs);
pfigure.Segments = pcol;
PathFigureCollection pfcol = new PathFigureCollection();
pfcol.Add(pfigure);
PathGeometry pg = new PathGeometry();
pg.Figures = pfcol;
Path p = new Path();
p.Stroke = Brushes.Black;
p.StrokeThickness = 2;
p.Data = pg;
sekvCanvas.Children.Add(p);
Canvas.SetLeft(sekvCanvas, 30);
Canvas.SetTop(sekvCanvas, 60);
table.Children.Add(sekvCanvas);
}
private void Clear_Click(object sender, RoutedEventArgs e)
{
table.Children.Clear();
}
Як з цього переробити на горизонтальне елімінування?
-
можу допомогти з кодом, але я нічого не зрозумів про елімітування та унітерми
-
Актуальные фриланс-проекты в категории C#
Сравнительный анализ эффективности кастомного ПО (v2.2-field) и эталонного ПО (Meshtastic v2.x)
1000 UAH
Сравнительный анализ эффективности кастомного ПО (v2.2-field) и эталонного ПО (Meshtastic v2.x) на идентичной аппаратной платформе (ESP32 + SX1268, 2W) по критериям дальности, пропускной способности, стабильности линка и энергопотребления. Провести тесты с замерами с учетом… C и C++, C# ∙ 7 дней 5 часов назад ∙ 2 ставки |
Создание плагина для интеграции с POS-системой Syrve, C#Разработать плагин для POS-системы Syrve (on-premise), который устанавливается на сервер заведения. Плагин должен: (1) передавать на наш сервер данные в режиме реального времени — заказы, статусы столов, платежи, чеки; (2) принимать команды от Reservble — подтверждения… C#, Веб-программирование ∙ 10 дней 1 час назад ∙ 14 ставок |