Publish your project for free and start receiving offers from freelance contractors in serveral minutes after publication!

Горизонтальне елімінування унітермів

project expired
C#


Допоможіть з кодом програми не мажу розібратися як зробити за допомогою мови програмування 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();
        }
Як з цього переробити на горизонтальне елімінування?


  • можу допомогти з кодом, але я нічого не зрозумів про елімітування та унітерми

  • Олег Мамчур — project author
    Complain | 10 December 2016 |

    в тому і справа я теж не розумію як це зробити мені дали код операції горизонтального секвентування на операцію горизонтального паралелення це все що я знаю

  • Олег Мамчур — project author
    Complain | 10 December 2016 |

    і то не відомо чи він правельний

  • якщо ви не знаєте що вам треба і що у вас є, то вам рано на фріланс, розберіться, створіть ТЗ і приходьте


Client
Project published
10 December 2016
38 views
Contractor location
Ukraine Ukraine