none
Prim Algoritması RRS feed

  • Genel Tartışma

  • Bir merkezi dağıtım hattından bir yerleşim bölgesine telefon hattı çekilmek istenmektedir. En az kablo harcanarak hattın kurulması istenmektedir.

    • Problemin prim algoritması ile çözülmesi gerekmektedir.

     • Problem ve çözümü görsel bir arayüz ile sağlanmalıdır. Bunun için; ◦ Görsel arayüz yerleşim yerleri ve merkez dağıtım ofisinin fare ile ekranda gösterilmesini sağlayan bir panele sahip olmalıdır.

    ◦ Yerleşim yerleri ve merkez dağıtım ofisi istenilen yere eklenebilmeli, taşınabilmeli ve siline bilmelidir. ◦ Harita yenilendiğinde paneldeki her şey silinmelidir. ◦ İstenildiği kadar ev ve merkez dağıtım ofisi eklene bilmelidir. ◦ Çöz butonuna basıldığında algoritma çalışmalı ve sonucu görsel arayüzde çizdirmelidir.

    • Sonucun ne kadar olduğu ayrıca gösterilmelidir.

    Görsel kısmını dahi halledemiyorum. Yapabildiklerim bunlar. Ev ve ofis için panel kullandım ama şimdi onları seçip hareket ettirmem ya da silmem gerekiyor sanırım. Bilgisi olanlar yardımcı olabilir mi ?  

     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            bool ekle;
            int x, y;
            Graphics g;
            private void Form1_Load(object sender, EventArgs e)
            {
                g = CreateGraphics();
            }
            int e_count = 1;
            int o_count = 1;
            private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                x = e.X;
                y = e.Y;
                if (e.Button == MouseButtons.Left)
                {
                    ekle = true;
                     e_count ++;
                     o_count ++;
                    
                    if (ev_ekle.Checked && istasyon_ekle.Checked == false)
                    {
                        for (int m = 1; m <= e_count; m++)
                        {
                            Panel panel = new Panel();
                            panel.Name = "panel" + Convert.ToString(m);
                            panel.BackColor = Color.Blue;
                            panel.Location = new Point(x, y);
                            panel.Size = new Size(30, 30);
                            this.Controls.Add(panel);
                        }
                    }
                    else if (istasyon_ekle.Checked && ev_ekle.Checked == false)
                        for (int n = 1; n <= o_count; n++)
                        {
                            Panel panel = new Panel();
                            panel.Name = "panel" + Convert.ToString(n);
                            panel.BackColor = Color.Red;
                            panel.Location = new Point(x, y);
                            panel.Size = new Size(30, 30);
                            this.Controls.Add(panel);
                        }
                }
            }       
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                Text = String.Format("{0} : {1}", e.X, e.Y);
                x = e.X;
                y = e.Y;
            }
            private void Form1_MouseUp(object sender, MouseEventArgs e)
            {
                ekle = false;
            }  
        }
    11 Aralık 2015 Cuma 14:23