Элемент управления DataGridView
При работе с двухмерными массивами ввод и вывод информации на экран удобно организовывать в виде таблиц. Элемент управления DataGridView может быть использован для отображения информации в виде двумерной таблицы. Для обращения к ячейке в этом элементе необходимо указать номер строки и номер столбца. Например: dataGridView1.Rows[2].Cells[7].Value = "*";данный код позволяте записать во вторую строку в 7 ячейку знак звездочка.
Порядок выполнения задания
Задание: Создать программу для определения целочисленной матрицы 15 на 15. Разработать обработчик для поиска минимального элемента на дополнительной диаганали матрицы. Результат, после нажатия кнопки типа Button, вывести в textBox.
Окно программы приведено на рис. 3.1.
Рис. 3.1. Окно программы для работы с двухмерным массивом
Текст обработчика события нажатия на кнопку приведен ниже.
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.RowCount = 15; //Указываем количество строк
dataGridView1.ColumnCount = 15; //Указываем количество столбцов
int[,] a = new int[15,15]; //Инициализируем массив
int i,j;
//Заполняем матрицу случайными числами
Random rand = new Random();
for (i=0; i<15; i++)
for (j=0; j<15; j++)
a[i,j] = rand.Next(-100,100);
//Выводим матрицу в dataGridView1
for (i=0; i<15; i++)
for (j=0; j<15; j++)
dataGridView1.Rows[i].Cells[j].Value = Convert.ToString(a[i,j]);
//производим поиск максимального элемента на дополнительной диагонали
int m = int.MinValue;
for (i = 0; i < 15; i++)
if (a[i, 14 - i] > m) m = a[i, 14 - i];
// выводим результат
textBox1.Text = Convert.ToString(m);
}
Индивидуальные задания
Под словами «дана матрица» («дан массив») следует понимать матрицу (динамический массив), сгенерированную в разрабатываемой программе с использованием генератора случайных чисел. Размерности матриц (массивов), типы данных их элементов (целые/вещественные) и диапазоны значений должны задаваться пользователем при работе программы. Следует максимально использовать возможности, предоставляемые классом Array и оператором foreach. Исходные данные и результаты вычислений должны отображаться в разных элементах управления на форме.
1. Дана прямоугольная целочисленная двумерная матрица. Найти наименьшие элементы в каждой строке матрицы, результат оформить в виде ступенчатого массива, элементы которого для каждой строки содержат индексы найденных элементов.
2. Дана квадратная целочисленная матрица. Построить два ступенчатх массива, содержащие ненулевые элементы, находящиеся выше и ниже побочной диагонали.
3. Дана квадратная вещественная матрица. Найти наибольшие элементы во всех ее диагоналях (включая диагонали длины 1), сформировать ступенчатый массив результатов.
4. Даны две прямоугольные вещественные матрицы. Вычислить их произведение, сформировать ступенчатый массив и занести в него только неотрицательные элементы произведения исходных матриц.
5. Из заданной целочисленной прямоугольной трехмерной матрицы удалить все элементы, значения которых совпадают с суммой индексов. Результат поместить в трехмерный ступенчатый массив.
6. Преобразовать заданную двумерную прямоугольную вещественную матрицу в ступенчатый массив путем удаления из строк тех элементов, значения которых находятся в диапазоне между средним арифметическим данной строки и средним арифметическим всей матрицы.
7. Преобразовать сильно разреженную двумерную целочисленную матрицу (значения большинства элементов которой равны нулю) в два ступенчатых массива. Для каждой строки первый массив содержит значение ненулевого элемента, а второй – индекс столбца исходной матрицы, содержащего этот элемент.
8. Извлечь из каждого столбца заданного двумерного массива в точности n+1 (где n – индекс столбца) наименьших элементов и сформировать ступенчатый треугольный массив, строки которого содержат извлеченные элементы.
9. Преобразовать заданную двумерную матрицу вещественных чисел к верхнему треугольному виду (см. метод Гаусса решения систем линейных алгебраических уравнений), результат оформить в виде ступенчатого массива.
10. Преобразовать заданную целочисленную двумерную матрицу в ступенчатый массив, содержащий в каждой строке только те элементы строки исходной матрицы, которые не делятся нацело на заданное число.
11. Из двух заданных двумерных прямоугольных целочисленных массивов с одинаковым количеством строк построить ступенчатый двумерный массив, строки которого содержат только элементы, имеющиеся в строках обеих исходных массивов с тем же индексом.
12. Разбить заданную прямоугольную двумерную целочисленную матрицу на два ступенчатых массива. В первый массив включить элементы строк до последнего максимального элемента строки исключительно (без этого элемента), во второй массив – все остальные элементы строк.
13. Преобразовать заданную двумерную прямоугольную целочисленную матрицу в ступенчатый массив путем удаления из ее столбцов всех совпадающих элементов, кроме первого.
14. Преобразовать заданную двумерную прямоугольную вещественную матрицу в ступенчатый массив путем удаления из строк тех элементов, которые меньше следующего элемента.
15. Преобразовать заданную двумерную прямоугольную вещественную матрицу в ступенчатый массив путем удаления из столбцов тех элементов, значения которых меньше среднего арифметического, вычисленного для данного столбца.
16. Разбить двумерную прямоугольную вещественную матрицу на два ступенчатых массива. В первый построчно включить те элементы, значения которых меньше среднего арифметического строки, расположив их по возрастанию, во второй – все остальные по убыванию.
17. Преобразовать заданную трехмерную целочисленную матрицу в ступенчатый трехмерный массив, включив в него только уникальные элементы строк исходной матрицы.
18. Даны два одномерных целочисленных массива. Сформировать ступенчатый массив, содержащий в каждой строке арифметическую прогрессию с шагом 1, начинающуюся со значения соответствующего элемента первого массива, длина которой равна значению элемента второго массива (не создавать подмассив, если это значение меньше или равно нулю).
19. Преобразовать сильно разреженную двумерную целочисленную матрицу (значения большинства элементов которой равны нулю) в ступенчатый массив, содержащий пары: количество нулевых элементов – значение ненулевого элемента.
20. На основании заданного двумерного целочисленного массива сформировать два ступенчатых массива, первый из которых содержит уникальные значения элементов строк, а второй – количество этих элементов в строке.
21. Преобразовать заданный двумерный вещественный массив в ступенчатый путем включения в него элементов, сумма индесов строки и столбца которых кратна модулю разности этих индексов плюс 2.
22. Преобразовать заданный двумерный целочисленный массив в ступенчатый, включив в него только те элементы, значения которых равны сумме значений предыдущего и последующего элементов в строке.
23. Разбить заданный двумерный целочисленный массив на два ступенчатых массива, первый из которых содержит все элементы с четными значениями, а второй – все элементы с нечетными значениями.
24. Преобразовать заданную двумерную прямоугольную целочисленную матрицу в ступенчатый массив путем удаления из ее строк всех совпадающих элементов.
Извлечь из каждой строки заданного двумерного целочисленного массива столько элементов (начиная с первого элемента строки), каково значение элемента на главной диагонали и сформировать ступенчатый массив.