Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2015, 14:48   #1
Tita483
Новичок
Джуниор
 
Регистрация: 04.11.2015
Сообщений: 1
Восклицание Алгоритм дейкстры - матрица смежности(C#)

Есть код программы на C#. Мне нужно сделать так чтобы в dataGridView1 автоматически заполнялась матрица смежности. Как можно это сделать?

Код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace kr_way
{
    public partial class Form1 : Form
    {
        int chis_ver;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int i ;
            chis_ver = (int) numericUpDown1.Value;
            int start_ver = (int)numericUpDown2.Value;

            bool [] Lab = new bool[chis_ver];
            int[,] A = {{0,5,8,0,0,0,0},{5,0,0,12,0,9,0},{8,0,0,0,8,4,2},{0,12,0,0,3,6,0},{0,0,8,3,0,0,7},{0,9,4,6,0,0,0},
{0,0,2,0,7,0,0}};
            int[] kr_way = new int[chis_ver];

            for ( i = 0; i < chis_ver; i++) 
            {
                Lab[i] = false;
                kr_way[i] = int.MaxValue;

            }
            int[] B = new int[chis_ver];
            

            kr_way[start_ver] = 0;
            Lab[start_ver] = true;

            i = start_ver;

            do
            {
                for(int j=0; j<chis_ver;j++)
                {
                      if (A[i, j] != 0 && kr_way[j] > kr_way[i] + A[i, j])
                    {
                        Lab[j] = true;
                        kr_way[j] = kr_way[i] + A[i, j];


                    }
                }
                Lab[i] = false;

                i = -1; 
                
                for (int k = 0; k < chis_ver; k++)
                {
                   int min = int.MaxValue;
                    if (kr_way[k] < min && Lab[k] == true)
                    {
                        min = kr_way[k];
                        i = k;

                    }

                }

            }while(i!= -1);

           for(int m=0; m<chis_ver;m++)
           {
               textBox1.Text += kr_way[m] + "\r\n";
           

           }
                  
          


        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            
        }

        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            int l = e.ColumnIndex, y = e.RowIndex;
            if (l < 0 || y < 0) return;

            dataGridView1[y, l].Value = dataGridView1[l, y].Value;
            try
            {
                double t = Convert.ToDouble(dataGridView1[l, y].Value);
                dataGridView1[l, y].Style.ForeColor = Color.Black;
            }
            catch
            {
                dataGridView1[l, y].Style.ForeColor = Color.Red;
            }
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            int ch = (int) numericUpDown1.Value;
            dataGridView1.ColumnCount = dataGridView1.RowCount = ch;
        }
    }
}
Tita483 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица смежности vika911 Помощь студентам 0 17.03.2012 14:54
Матрица смежности rubakKa Общие вопросы C/C++ 5 18.12.2010 21:33
Матрица Смежности Alex_sim Помощь студентам 5 18.09.2010 21:37
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11