Практическая работа №26, 27, 28
Название практической работы:создание проектов для работы с двумерными массивами
Цель работы: 1) освоить заполнение двумерных массивов разными способами;
2) освоить вывод элементов двумерного массива в сетку dataGridView;
3) освоить выполнение типовых операций обработки двумерных массивов.
знания (актуализация)
· понятие двумерного массива;
· правила описания двумерных массивов;
· план работы с двумерными массивами;
умения:
· создавать проекты для работы с двумерными массивами.
Теоретический материал
В повседневной жизни довольно часто приходится иметь дело с информацией, которая представлена в табличной форме. Колонки и (или) строки таблицы, как правило, состоят из однородной информации. Поэтому в программе, обрабатывающей табличные данные, имеет смысл использовать массивы для хранения и обработки таблиц. Такая таблица может быть представлена как двумерный массив.
Для работы с двумерными массивами используются вложенные циклы.
|
| А13 | А14 | ||||||
A [3, 4] |
|
|
|
| |||||
|
|
|
|
Пример: создадим приложение, которое выводит двухмерный массив случайных чисел в объекте dataGridView и определяет минимальный элемент.
int [,] a=new int [3, 4];
//заполнение массива случайными числами и вывод его в сетку
Random rnd=new Random();
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.RowCount=3;
dataGridView1.ColumnCount=4;
for (int i = 0; i < 3; i++)
{
//заполнение заголовков строк порядковыми номерами
dataGridView1.Rows[i].HeaderCell.Value = (i+1).ToString();
for (int j = 0; j < 4; j++)
{
a[i,j] = rnd.Next(-10, 11);
dataGridView1[j,i].Value= a[i,j].ToString();
}
}
}
//поиск минимального элементов по строкам и вывод их в ту же сетку
private void button2_Click(object sender, EventArgs e)
{
dataGridView1.ColumnCount=5;
dataGridView1.Columns[4].HeaderText = "Min";
for (int i = 0; i < 3; i++)
{
int min=a[i,0];
for (int j = 1; j < 4; j++)
{
if (a[i,j]<min) min=a[i,j];
}
dataGridView1[4,i].Value= min.ToString();
}
}
Ход работы
1. Cформируйте квадратную матрицу порядка nпо заданному образцу (обратите внимание на заливку ячеек сетки):
-5 | ||||||||||||||||||
-5 | -5 | |||||||||||||||||
-5 | -5 | -5 | ||||||||||||||||
-3 | -3 | -3 | ||||||||||||||||
-3 | -3 | -3 | ||||||||||||||||
-3 | -3 | -3 | ||||||||||||||||
… | … | … | … | |||||||||||||||
… | … | … | … | |||||||||||||||
2. Составьте проект для решения ниже приведенных задач. Если сказано, что массив заполнен некоторыми числами – используйте либо заполнение случайными числами (диапазон случайных чисел определяйте самостоятельно, опираясь на смысл задачи), либо заполнение с клавиатуры.
Рекомендации: старайтесь оформлять действия с сеткой и массивами в виде отдельных методов соответствующих классов.
1 | Сформировать двумерный массив M размерностью 4х3 по правилу: элементы первой строки=1, второй строки=2, все остальные=3. Найти сумму и произведение всех элементов, а также максимальный элемент массива. |
2 | Найти сумму всех положительных элементов массива Y[4, 4], найти среднее арифметическое всех элементов. Массив сформировать случайным образом. |
3 | Задан двумерный массив из 12-ти элементов. Разделить каждый элемент массива на 7. Результат сохранить в том же массиве. |
4 | Определить сумму элементов главной диагонали матрицы, сумму элементов побочной диагонали. |
5 | Дан двумерный массив. Определить: 1) сумму элементов второго столбца массива, больших 10; 2) сумму элементов третьей строки массива, не превышающих 25; 3) количество ненулевых элементов первой строки массива; 4) количество элементов второго столбца массива, больших 15; 5) сумму отрицательных элементов пятой строки массива; 6) сумму элементов четвертого столбца массива, меньших 100; 7) количество элементов четвертой строки массива, меньших 5; 8) количество ненулевых элементов второго столбца массива, больших 15; 9) среднее арифметическое четных элементов третьего столбца; 10) среднее арифметическое элементов четвертой строки, кратных трем; 11) среднее арифметическое нечетных элементов пятой строки; 12) среднее арифметическое элементов четвертого столбца, кратного четырем. |
6 | В квадратной матрице выделим четыре четверти, ограниченные главной и побочной диагоналями (без учета элементов, расположенных на диагоналях): верхнюю, нижнюю, левую и правую. Найти сумму элементов: · верхней четверти; · правой четверти; · нижней четверти; · левой четверти. |
7 | В массиве записаны целые числа. Вычислить: · произведение элементов побочной диагонали массива, меньших 10; · сумму элементов главной диагонали массива, оканчивающихся цифрой 7; · количество нулевых элементов, расположенных над главной диагональю массива; · число нечетных элементов, расположенных под побочной диагональю массива. |
8 | Дана матрица размера M ×N и целое число K (1 ≤K ≤M). Найти сумму и произведение элементов K-й строки данной матрицы. |
9 | Дана матрица размера M ×N и целое число K (1 ≤K ≤M). Найти сумму и произведение элементов K-го столбца данной матрицы. |
10 | В двумерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первой строке — информация о группах первого курса, во второй — второго и т. д.). На каждом курсе имеется 8 групп. Составить программу для расчета общего числа студентов на любом курсе. |
11 | В двухмерном массиве хранится информация о зарплате 5 человек за каждый месяц года (первого человека — в первой строке, второго — во второй и т. д.). Составить программу для расчета общей зарплаты, полученной за год любым человеком, информация о зарплате которого представлена в массиве. |
12 | В поезде 10 вагонов, в каждом из которых 36 мест. Информация о проданных на поезд билетах хранится в двумерном массиве, номера строк которых соответствуют номерам вагонов, а номера столбцов — номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае — 0. Составить программу, определяющую число свободных мест в любом из вагонов поезда. |
13 | Дана матрица размера M ×N. Для каждого столбца матрицы с четным номером (2, 4, …) найти сумму его элементов. Постарайтесь не использовать условный оператор. |
14 | Дана матрица размера M ×N. В каждой строке (столбце) матрицы найти минимальный (максимальный) элемент. |
15 | Дан двумерный массив целых чисел. В каждой его строке (столбце) найти: 1) сумму отрицательных элементов; 2) количество четных элементов; 3) среднее арифметическое отрицательных элементов; 4) среднее арифметическое положительных элементов, кратных пяти; 5) количество элементов, попадающих в промежуток от a до b; 6) сумму нечетных положительных элементов; 7) количество положительных элементов, кратных k; 8) количество элементов, кратных a или b; 9) сумму элементов в строках с k1 по k2; 10) произведение отрицательных элементов в столбцах с k1 по k2; 11) поменять местами первый элемент и максимальный (минимальный); 12) ко всем четным элементам добавить значение первого элемента соответствующего столбца (строки). |
3. Задачи посложнее.
1 | Задана вещественная квадратная матрица порядка n. Составить программу вычисления суммы элементов матрицы A, расположенных в строках с отрицательным элементом на главной диагонали. |
2 | Пусть дана вещественная квадратная матрица порядка n. В строках с отрицательным элементом на главной диагонали найдите: · сумму элементов; · наибольший из элементов. |
3 | Пусть дана целочисленная квадратная матрица порядка п. Выясните, имеются ли в матрице ненулевые элементы, и если имеются, то укажите индексы: · первого из нулевых элементов; · всех нулевых элементов. |
4 | Дан двумерный массив. Определить: 1) номер столбца (первого), в котором расположен минимальный элемент четвертой строки массива; 2) номер строки (последней), в котором расположен максимальный элемент третьего столбца массива; 3) координаты минимального (первого, последнего) элемента массива; 4) координаты максимального (первого, последнего) элемента массива; 5) в каждой строке (столбце) – максимальный элемент; 6) в каждой строке (столбце) – минимальный элемент; 7) минимальную сумму элементов по строкам; 8) максимальную сумму элементов по столбцам. |
5 | Дана матрица размера M ×N. Найти номер ее столбца с наименьшим произведением элементов и вывести данный номер, а также значение наименьшего произведения. |
6 | Дана матрица размера M ×N. Найти номер ее строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей суммы. |
7 | Дана матрица размера M ×N. Найти максимальный среди минимальных элементов ее строк. |
8 | Дана матрица размера M ×N. Найти минимальный среди максимальных элементов ее столбцов. |
9 | Дана матрица размера M ×N. В каждой ее строке найти количество элементов, меньших среднего арифметического всех элементов этой строки. |
10 | Дана матрица размера M ×N. В каждом ее столбце найти количество элементов, больших среднего арифметического всех элементов этого столбца. |
11 | Дан двумерный массив из 2 столбцов и 10 строк. В его первом столбце записано количество мячей, забитых футбольной командой в той или иной игре, а во втором – количество пропущенных мячей в этой же игре. 1) Для каждой проведенной игры напечатать словесный результат: «выигрыш», «ничья» или «проигрыш». 2) Определить количество выигрышей данной команды. 3) Определить количество выигрышей и количество проигрышей данной команды. 4) Определить количество выигрышей, количество ничьих и количество проигрышей данной команды. 5) Определить, в скольких играх разность забитых и пропущенных мячей была большей или равной трем. 6) Определить общее число очков, набранных командой (за выигрыш дается 3 очка, за ничью – 1, за проигрыш – 0). |
4. Ответьте на контрольные вопросы:
- Что такое массив?
- В чем разница между одномерными и двумерными массивами?
- Как осуществляется описание двумерных массивов на С#?
- Как можно осуществить ввод матрицы?
- Как можно организовать вывод матрицы?
5. Оформите и сдайте отчет преподавателю.