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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2015, 21:56   #1
tisit
Пользователь
 
Регистрация: 15.12.2014
Сообщений: 24
По умолчанию datagridview двумерный массив

Помогите разобрать функции комментариями
не совсем понимаю некоторые функции и методы.
Суть в том, что заполняется datagridview вручную или случайно, размер задается с помощью numericupdown.
программа вычисляет количество элементов, кратных 3, в каждом столбце массива и указывает столбец, содержащий наибольшее количество чисел кратных 3
Код:
{
    public partial class Form1 : Form
    {
        int ArrRows;
        int ArrColumns;
        int[,] Arr;

        public Form1()
        {
            InitializeComponent();
            ArrRows = (int)numericUpDown1.Value;
            ArrColumns = (int)numericUpDown2.Value;            
            DataToDGW(ArrRows, ArrColumns);// выводит в datagridview заданную таблицу
            // при включенном radioButton2 заполняет случайными числами, иначе вручную
            if (radioButton2.Checked) 
                RndData(dataGridView1);
            else
                ZeroData(dataGridView1);
        }

        void DataToDGW(int arrRows, int arrColumns)
        {
            //удаляем строки в таблице
            dataGridView1.Rows.Clear();
            dataGridView1.Columns.Clear();
            for (int i = 0; i < arrColumns; i++)
                dataGridView1.Columns.Add(i.ToString(), i.ToString());
            for (int i = 0; i < arrRows; i++)
                dataGridView1.Rows.Add();
        }

        void RndData(DataGridView dgv)
        {
            Random rnd = new Random();
            for (int i = 0; i < dgv.Rows.Count; i++)
            {
                for (int j = 0; j < dgv.Rows[i].Cells.Count; j++)
                {
                    dgv.Rows[i].Cells[j].Value = rnd.Next(-100, 100);
                }
            }
        }

        void ZeroData(DataGridView dgv)
        {
            for (int i = 0; i < dgv.Rows.Count; i++)
            {
                for (int j = 0; j < dgv.Rows[i].Cells.Count; j++)
                {
                    dgv.Rows[i].Cells[j].Value = 0;
                }
            }
        }

        int[] Calcdata(DataGridView dgv)
        {
            Arr = new int[dgv.Rows.Count, dgv.Columns.Count];
            int[] res = new int[dgv.Columns.Count];

            for (int i = 0; i < dgv.Rows.Count; i++)
            {
                for (int j = 0; j < dgv.Rows[i].Cells.Count; j++)
                {
                    if (Convert.ToInt32(dgv.Rows[i].Cells[j].Value) % 3 == 0)
                    {
                        res[j] ++;
                    }
                }
            }

            return res;
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            ArrRows = (int)numericUpDown1.Value;            

            DataToDGW(ArrRows, ArrColumns);

            if (radioButton2.Checked)
                RndData(dataGridView1);
            else
                ZeroData(dataGridView1);
        }

        private void numericUpDown2_ValueChanged(object sender, EventArgs e)
        {
            ArrColumns = (int)numericUpDown2.Value;

            DataToDGW(ArrRows, ArrColumns);

            if (radioButton2.Checked)
                RndData(dataGridView1);
            else
                ZeroData(dataGridView1);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                int[] res = Calcdata(dataGridView1);

                label1.Text = "Номер столбцов с числами % 3: ";
                Array.ForEach(res, x => label1.Text += x.ToString() + ",");
                if (label1.Text[label1.Text.Length - 1] == ',')
                    label1.Text = label1.Text.Remove(label1.Text.Length - 1, 1);

                int indexCol = -1;
                var maxArRes = res.Max();
                for (int i = 0; i < res.Length; i++)
                {
                    if (maxArRes == res[i])
                    {
                        indexCol = i;
                        break;
                    }
                }

                label2.Text = "№ Столбца с максимальным количеством элементов % 3: " +indexCol.ToString();

                dataGridView1.ClearSelection();

                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    dataGridView1.Rows[i].Cells[indexCol].Selected = true;
                    dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[indexCol];
                }
            }
            catch(Exception)
            {
                MessageBox.Show("Ошибка ввода!\n");
            }

        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            ZeroData(dataGridView1);
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            RndData(dataGridView1);
        }
    }
}
tisit вне форума Ответить с цитированием
Старый 20.12.2015, 23:36   #2
tisit
Пользователь
 
Регистрация: 15.12.2014
Сообщений: 24
По умолчанию

Разобрался.
tisit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
Java: Дан двумерный массив чисел А размером 6х6 и одномерный массив Х из 6-ти чисел. Заменить первые три строки массива A vikysha55 Помощь студентам 1 16.04.2014 10:50
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
DataGridView ссылка на весь массив fredwriter Помощь студентам 1 19.09.2012 20:37
DataGridView или как заполнить массив. Визуальное программирование ?! cj_loman Помощь студентам 1 10.12.2011 03:04