|
Лабораторные работы №3-7. Лабораторная работа программирование алгоритмов линейной структуры на языке c#
ЛАБОРАТОРНАЯ РАБОТА № 7. ОБРАБОТКА МНОГОМЕРНЫХ МАССИВОВ НА ЯЗЫКЕ C#
Цель работы: овладение практическими навыками работы с многомерными массивами, особенностями их ввода и вывода и обработке данных в них. Многомерные массивы
Многомерные массивы имеют более одного измерения. Чаще всего используются двумерные массивы, которые представляют собой таблицы. Каждый элемент массива имеет два индекса, первый определяет номер строки, второй - номер столбца, на пересечении которых находится элемент. Нумерация строк и столбцов начинается с нуля.
Объявить двумерный массив можно одним из способов:
тип [,] имя__массива;
тип [,] имя__массива = new тип [размер1, размер2];
тип [,] имя__массива={{элементы 1-ой строки}, … , {элементы n-ой строки}};
тип [,] имя__массива= new тип [,]{{элементы 1-ой строки}, …,{элементы n-ой строки}};
Например:
int [,] a;
int [,] a= new int [3, 4];
int [,] a={{0, 1, 2}, {3, 4, 5}};
int [,] a= new int [,]{{0, 1, 2}, {3, 4, 5}};
При обращении к свойству Length для двумерного массива получаем общее количество элементов в массиве. Чтобы получить количество строк нужно обратиться к методу GetLength с параметром 0. Чтобы получить количество столбцов - к методу GetLength с параметром 1.
Пример:
class Program
{
static void PrintArray(string a, int[,] mas)
{
Console.WriteLine(a);
for (int i = 0; i < mas.GetLength(0); i++)
{
for (int j = 0; j < mas.GetLength(1); j++)
Console.Write("{0} ", mas[i, j]);
Console.WriteLine();
}
}
static void Change(int[,] mas)
{
for (int i = 0; i < mas.GetLength(0); i++)
for (int j = 0; j < mas.GetLength(1); j++)
if (mas[i, j] % 2 == 0) mas[i, j] = 0;
}
static void Main()
{
try
{
int[,] MyArray ={ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
PrintArray("исходный массив:", MyArray);
Change(MyArray);
PrintArray("итоговый массив", MyArray);
}
catch (FormatException)
{ Console.WriteLine("неверный формат ввода данных"); }
catch (OverflowException)
{ Console.WriteLine("переполнение"); }
catch (OutOfMemoryException)
{
Console.WriteLine("недостаточно памяти для создания нового объекта");
}
}
}
Вопросы для самоконтроля
Какой массив называется п-мерным?
Как организовать вывод матрицы прямоугольной таблицей?
Укажите особенности ввода и вывода двумерных массивов?
В чем состоит особенность использования приемов программирования при обработке массивов?
Существуют ли ограничения на размерность массива?
Какой массив называется двумерным?
Верно ли, что двумерный массив соответствует понятию прямоугольной таблицы (матрице, набору векторов)?
Предложите способы вывода элементов двумерного массива.
Практическая часть Задание №1. Обработка матриц Пример: Вычислить сумму элементов каждой строки матрицы А(6х5). Блок-схема алгоритма:
![](15811_html_21da68a3.png)
Варианты задания №1
Вычислить и запомнить сумму и число положительных элементов каждого столбца матрицы А(8х7).
Вычислить сумму и число элементов матрицы А(10х10), находящихся под главной диагональю и над ней.
Вычислить сумму и число положительных элементов матрицы В(9х9), находящихся над главной диагональю.
Записать на место отрицательных элементов матрицы В(7х7) нули и вывести ее на печать.
Записать на место отрицательных элементов матрицы нули, а на место положительных – единицы. Вывести на печать нижнюю треугольную матрицу.
Найти в каждой строке матрицы А(8х10) максимальный и минимальный элементы. Матрицу вывести в виде таблицы.
Транспонировать матрицу В(8х8) и вывести ее таблицей.
Для каждой строки матрицы А(5х7) найти число элементов кратных пяти.
Найти максимальный элемент матрицы А(6х10) и его порядковый номер.
Найти в каждой строке матрицы В(8х8) наибольший элемент и поменять его местами с элементом главной диагонали. Вывести матрицу на экран дисплея.
Найти наибольший и наименьший элементы матрицы и поменять их местами.
Вычислить среднее арифметическое значений элементов каждой строки матрицы А(8х6).
Найти строку с наибольшей и наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов для матрицы В(6х6).
Найти количество отрицательных элементов матрицы А(7х8).
Найти порядковый номер минимального элемента матрицы А(8х8).
Найти разность сумм первой и последней строк матрицы А(9х6).
Определить число четных элементов матрицы А(10х6).
Найти сумму элементов матрицы А(9х9) кратных четырем.
Поменять местами вторую и предпоследнюю строки матрицы В(8х8). Вывести ее на экран.
Найти количество элементов матрицы В(7х8) кратных пяти в третьем столбце.
Поменять местами первый и последний столбцы матрицы А(9х6) и вывести ее на экран.
Найти количество отрицательных элементов матрицы А(9х9).
Определить порядковый номер максимального элемента главной диагонали матрицы А(8х8).
Найти среднее арифметическое элементов матрицы А(7х9) больших девяти.
Определить минимальный элемент верхней треугольной матрицы для А(8х10).
Задание №2. Дана целочисленная прямоугольная матрица:
Найти количество строк, без нулевых элементов.
Найти максимальное из чисел, встречающихся в заданной матрице более одного раза.
Определить количество столбцов, не содержащих ни одного нулевого элемента.
Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик.
Найти количество столбцов, содержащих хотя бы один нулевой элемент.
Найти номер строки, в которой находится самая длинная серия одинаковых элементов.
Найти произведение элементов в тех строках, которые не содержат отрицательных элементов.
Найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
Найти сумму элементов в тех столбцах, которые не содержат отрицательных элементов.
Найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
Найти номера строк и столбцов всех седловых точек матрицы. Примечание. Матрица А имеет седловую точку Аij, если Aij является минимальным элементом в i-й строке и максимальным в j-м столбце.
Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом.
Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.
Соседями элемента Аij в матрице назовем элементы Akl c , , . Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент – это среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания этой матрицы.
В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали. (см. задачу №16)
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов этой матрицы.
Найти сумму модулей элементов, расположенных выше главной диагонали.
Найти количество строк, содержащих хотя бы один нулевой элемент.
Найти номер столбца, в котором находится самая длинная серия одинаковых элементов.
Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями.
Найти номер первой из строк, содержащих хотя бы один положительный элемент.
Найти сумму элементов в тех строках, которые не содержат отрицательных элементов.
Найти минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
Задание №3. Решите задачу:
В двумерном массиве хранится информация о количестве учеников в каждом классе каждой параллели школы с первой по одиннадцатую (в первой строке – информация о классах первой параллели, во второй – второй параллели и т.д.) В каждой параллели школы имеются четыре класса. Определить общее чисто учеников в параллели 5-х классов.
В зрительном зале 25 рядов, в каждом их которых 36 мест (кресел). Информация о проданных билетах храниться в двумерном массиве, номера строк которого соответствуют номерам рядов, а номера столбцов – номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае – 0. Составить программу, определяющую число проданных билетов на места в 12 ряду.
В двумерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первой строке – информация о группах первого курса, во второй – второго и т.д.) На каждом курсе имеется 8 групп. Составить программу для расчета общего числа студентов на любом курсе.
В двумерном массиве хранится информация о зарплате 20 человек за каждый месяц года (первого человека – в первой строке, второго – во второй и т.д.). Составить программу для расчета общей зарплаты, полученной за год любым человеком, информация о зарплате которого представлена в массиве.
В поезде 18 вагонов, в каждом из которых 36 мест. Информации о проданных на поезд билетах хранится в двумерном массиве, номера строк которых соответствуют номерам вагонов, а номера столбцов – номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае – 0. Составить программу, определяющую число свободных мест в любом из вагонов поезда.
В двумерном массиве хранится информация о зарплате 18 человек за каждый месяц года (за январь – в первом столбце, за февраль – во втором и т. д.). Определить общую зарплату, выплаченную в июне.
В двумерном массиве хранится информация о количестве студентов в той и иной группе каждого курса института с первого по пятый (в первом столбце – информация о группах первого курса, во втором – второго и т.д.). На каждом курсе имеется 10 групп. Определить общее число студентов на пятом курсе.
В двумерном массиве хранится информация о количестве учеников в каждом классе каждой параллели школы с первой по одиннадцатую (в первом столбце – информация о классах первой параллели, во втором – второй параллели и т.д.). В каждой параллели школы учатся 5 классов. Составить программу дли расчета общего числа учеников в любой параллели.
В двумерном массиве хранится информация о баллах, полученных спортсменами-пятиборцами в каждом из пяти видов спорта (в первом столбце – информация о баллах первого спортсмена, во втором – второго и т.д.). Общее число спортсменов равно 20. Составить программу для расчета общей суммы баллов, набранных любым спортсменом.
В двумерном массиве хранится информация об оценках каждого из 20 учеников класса по тому или иному предмету (в первой строке – информация об оценках первого ученика, во второй – второго). Общее число предметов равно 10. Определить среднюю оценку пятого ученика.
Фирма имеет 10 магазинов. Информация о доходе каждого магазина за каждый месяц года хранится в двумерном массиве (первого магазина – в первой строке, второго во второй и т.д.). Составить программу для расчета среднемесячного дохода любою магазина.
В двумерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первом столбце – информация о группах первого курса, во втором – второго и т.д.). На каждом курсе имеется 8 групп. Определить среднее число студентов в одной группе на третьем курсе.
В двумерном массиве хранится информация о зарплате 18 человек за каждый месяц года (в первом столбце – зарплата за январь, во втором – за февраль и т.д.). Составить программу для расчета средней зарплаты за любой месяц.
В двумерном массиве хранится информация о зарплате 18 сотрудников фирмы за каждый месяц года. Определить общую зарплату, выплаченную за год всем сотрудникам фирмы.
В двумерном массиве хранится информация о количестве учеников в каждом классе каждой параллели школы с первой по одиннадцатую (в первом столбце – информация о классах первой параллели, во втором – второй параллели и т.д.) В каждой параллели школы имеются 5 классов. Определить общее число учеников в школе.
В зрительном зале 23 ряда, в каждом из которых 40 мест (кресел). Информация о проданных билетах хранится в двумерном массиве, номера строк которого соответствуют номерам рядов, а номера столбцов – номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае – 0. Определить общее число свободных мест в зрительном зале.
В двумерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первой строке – информация о группах первого курса, во второй – второго и т.д.). На каждом. курсе имеется 8 групп. Определить среднее число студентов в одной группе.
В двумерном массиве в строках хранится информация об оценках каждою из 20 учеников класса по тому или иному предмету (в первой строке информации об оценках первого ученика, во второй – второго и т.д.). Общее число предметов равно 10. Определить среднюю оценку по классу в целом.
В двумерном массиве хранится информация о количестве учеников в том или ином классе каждой параллели школы с первой по одиннадцатую (в первой строке – информация о количестве учеников в первых классах, во второй – о вторых и т.д.). В каждой параллели имеются 4 класса. Определить среднее количество учеников в классах каждой параллели.
В двумерном массиве хранится информации о зарплате 18 сотрудников фирмы за каждый месяц года (в первом столбце – за январь, во втором – за февраль и т.п.). Определить среднюю зарплату за каждый месяц.
Три группы студентов, в каждой из которых 20 человек, в сессию сдавали по 3 экзамена. Сведения об оценках каждой группы хранятся в двумерных массивах. Определить лучшую по средней оценке группу.
Дан двумерный массив из 2 строк и 22 столбцов. В его первой строке записано количество мячей, забитых футбольной командой в той или иной игре, во второй – количество пропущенных мячей в этой же игре. Для каждой проведенной игры напечатать словесным результат: "выигрыш", "ничья" или "проигрыш''.
Дан двумерный массив из 2 строк и 22 столбцов. В его первой строке записано количество мячей, забитых футбольной командой в той или иной игре, во второй – количество пропущенных мячей в этой же игре. Для каждой проведенной игры определить количество выигрышей и количество проигрышей.
Дан двумерный массив из 2 строк и 22 столбцов. В его первой строке записано количество мячей, забитых футбольной командой в той или иной игре, во второй – количество пропущенных мячей в этой же игре. Определить, в скольких играх разность забитых и пропущенных мячей была большей или равной трем.
Дан двумерный массив из 2 строк и 22 столбцов. В его первой строке записано количество мячей, забитых футбольной командой в той или иной игре, во второй – количество пропущенных мячей в этой же игре. Определить общее число очков, набранных командой (за выигрыш дается 3 очка, за ничью — 1, за проигрыш — 0).
Задание №4. Нахождение максимума и минимума:
Дан двумерный массив. Определить минимальное значение среди элементов четвертого столбца массива.
Составить программу нахождения минимального значения среди элементов любой строки двумерного массива.
Дан двумерный массив. Определить номер столбца, в котором расположен минимальный элемент четвертой строки массива. Если элементов с минимальным значением в этой строке несколько, то должен быть найден номер столбца самого левого из них.
Дан двумерный массив. Определить номер строки, в котором расположен максимальный элемент третьего столбца массива. Если элементов с максимальным значением в этой столбце несколько, то должен быть найден номер строки самого нижнего из них.
Составить программу нахождения номера строки, в которой расположен максимальный элемент любого столбца двумерного массива. Если элементов с максимальным значением в этом столбце несколько, то должен быть найден номер строки самого нижнего из них.
Составить программу нахождения номера столбца, в котором расположен минимальный элемент любой строки двумерного массива. Если элементов с минимальным значением в этой строке несколько, то должен быть найден номер столбца самого левого из них.
Составить программу нахождения номера столбца, в котором расположен максимальный элемент любой строки двумерного массива. Если элементов с максимальным значением в этой строке несколько, то должен быть найден номер столбца самого правого из них.
Дан двумерный массив. Определить координаты минимального элемента массива. Если элементов с минимальным значением несколько, то должны быть найдены координаты самого нижнего и самого правого из них.
Дан двумерный массив. В каждой его строке найти минимальный элемент.
Дан двумерный массив. В каждой его строке найти координаты максимального элемента. Если элементов с максимальным значением в строке несколько, то должны быть найдены координаты самого левого из них.
Дан двумерный массив. В каждой его строке найти координаты минимального элемента. Если элементов с минимальным значением в строке несколько, то должны быть найдены координаты самого правого из них.
В двумерном массиве хранится информация о количестве учеников в каждом из четырех классов каждой параллели школы с первой по одиннадцатую (в первой строке – информация о первых классах, во второй – вторых и т.д.). Найти численность самой маленькой (по числу учащихся) параллели.
В двумерном массиве хранится информация о баллах, полученных спортсменами-пятиборцами в каждом из пяти видов спорта (в первой строке – информация о баллах первого спортсмена, во второй – второго и т.д.). Общее число спортсменов равно 20. Определить сколько баллов набрал спортсмен-победитель соревнований.
В двумерном массиве хранится информация о баллах, полученных спортсменами-пятиборцами в каждом из пяти видов спорта (в первой строке – информация о баллах первого спортсмена, во второй – второго и т.д.). Общее число спортсменов равно 20. Определить сколько баллов набрал спортсмен, занявший последнее место.
Дан двумерный массив. Найти строку с максимальной суммой элементов. Если таких строк несколько, должен быть найден номер самой нижней из них.
Дан двумерный массив. Найти строку с минимальной суммой элементов. Если таких строк несколько, должен быть найден номер самой верхней из них.
Информация о количестве жильцов и каждой из четырех квартир каждого этажа 12-этажного дома хранится в двумерном массиве (в первой строке – информация о квартирах первого этажа, во второй – второго и т.д.). Определить на каком этаже проживает меньше всего людей.
В зрительном зале 28 рядов, в каждом из которых по 36 мест (кресел). Информация о проданных билетах хранится в двумерном массиве, номера строк которого соответствуют номерам рядов, а номера столбцов – номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае – 0. Определить на какой ряд придано больше всего билетов.
В двумерном массиве размером 17x17 записано количество очков, набранные той или иной командой во всех встречах с другими командами (3 – если данная команда выиграла игру, 0 – если проиграла, 1 – если игра закончились вничью). Определить сколько очков набрала команда, ставшая чемпионом.
В двумерном массиве размером 17x17 записано количество очков, набранные той или иной командой во всех встречах с другими командами (3 – если данная команда выиграла игру, 0 – если проиграла, 1 – если игра закончились вничью). Определить номер команды, занявшей последнее место.
В двумерном массиве размером 17x17 записано количество очков, набранные той или иной командой во всех встречах с другими командами (3 – если данная команда выиграла игру, 0 – если проиграла, 1 – если игра закончились вничью). Определить сколько очков набрала команда, занявшая последнее место.
В двумерном массиве размером 17x17 записано количество очков, набранные той или иной командой во всех встречах с другими командами (3 – если данная команда выиграла игру, 0 – если проиграла, 1 – если игра закончились вничью). Определить номер команды, ставшей чемпионом.
Дан двумерный массив из двух строк и пятнадцати столбцов. Найти номера двух соседних столбцов, сумма элементов в которых минимальна.
Дан двумерный массив из двадцати двух строк и двух столбцов. Найти номера двух соседних строк, сумма элементов в которых максимальна.
В Москве самыми теплыми являются дни с 15 июля по 15 августа. Для проведения музыкального фестиваля необходимо выбрать 7 следующих подряд дней этого периода, которые были наиболее теплыми за последние 10 лет (данные каждого года о температуре воздуха в указанный период имеются).
|
|
|