Практическая работа. Обработка двумерных массивов Цель работы. Выполнив эту работу, Вы научитесь:
Ÿ выполнять формализацию задачи, сформулированной в терминах
описываемой предметной области, приводя ее к типовой задаче обработки двумерного массива;
Ÿ объявлять в программе двумерный массив;
Ÿ использовать оператор цикла for для организации циклов структуры «цикл в цикле»;
Ÿ организовывать процедуры типовой обработки двумерных массивов с использованием циклов.
1. Выберите из табл. 2.18 задание в соответствии с номером варианта.
2. Рассмотрите пример выполнения задания.
3. Укажите исходные данные и результаты, которые должны быть получены.
4. Выполните формализацию задачи, сформулировав ее в терминах требований по обработке двумерного массива.
5. Подготовьте тестовый вариант расчетов. Выполните расчеты с помощью калькулятора для тестового варианта.
6. Составьте алгоритм и программу решения задачи.
7. Выполните ввод и отладку программы в среде программирования Turbo Pascal. Для проверки правильности работы программы используйте подготовленный тестовый вариант расчетов.
8. Предъявите результаты расчетов преподавателю.
9. Оформите отчет по работе в соответствии с заданными требованиями.
Отчет по работе выполняется письменно в тетради. Отчет должен содержать: тему работы и условие задачи; описание исходных данных и результатов; формализацию задачи; текст программы на языке Паскаль; тестовый вариант расчетов и результаты расчета по программе.
Задание. В двумерном массиве B, состоящем из N строк и M столбцов, находятся размеры начисленной заработной платы N работников предприятия за M месяцев, т. е. B[ I, K ] – это заработная плата работника предприятия с номером I за месяц с номером K.
Составить программу, позволяющую выполнить:
Ÿ ввести с клавиатуры количество работников и количество месяцев, а также размеры заработной платы, для ввода исходных размеров заработной платы использовать подпрограмму-процедуру;
Ÿ определить наименьшую заработную плату за месяц с номером 1;
N – количество работников предприятия (целое число);
M – количество месяцев (целое число);
B[ I, K ] (I = 1, 2, 3,…, N; K = 1, 2, 3,…, M) – массив значений заработной платы (значения вещественного типа);
MIN – наименьшую заработную плату за месяц с номером 1 (число с дробной частью);
Значения заработной платы представляют собой конечный набор (N M значений) однотипных данных. Для их хранения можно использовать двумерный массив В, состоящий из N строк и M столбцов ( B [ 1, 1 ] – заработная плата работника номер 1 за первый месяц, B [ 1, 2 ] – заработная плата работника номер 1 за второй месяц, B [ 2, 1 ] – заработная плата работника номер 2 за первый месяц и т.д.
Абстрагируясь от физического смысла значений элементов массива, сформулируем задачу обработки абстрактного двумерного массива B.
Задача. Для заданного двумерного массива B, состоящего из N строк и M
столбцов, выполнить:
Ÿ ввести с клавиатуры количество строк и количество столбцов массива, а также значения элементов массива;
Ÿ определить наименьшее значение среди элементов столбца с номером 1 (MIN).
Задача свелась к выполнению типовых операций с двумерным массивом
(см. табл. 2.12).
N = 4; M = 3
Массив B:
MIN = 4000;
|
5000 |
7000 |
11000 |
|
8000 |
12000 |
13000 |
|
11000 |
4000 |
12000 |
|
4000 |
5000 |
5000 |
Определение наименьшего значения элементов первого столбца (MIN) выполняется попарным сравнением элементов, при этом второй индекс элементов массива будет неизменным и равным 1. Блок-схема алгоритма решения задачи показана на рис. 2.18.
Программа program Lab_4; var n, m, i, k : byte; min : real;
b : array [ 1 .. 10, 1 .. 10 ] of real; begin
Writeln ( ' Введите количество строк и столбцов в массиве В ' ); Readln ( n , m );
Writeln ( ' Вводите значения зарплат из массива B построчно ' ); for i := 1 to n do
for k := 1 to m do
Readln ( b[ i , k ] );
{поиск минимального значения в первом столбце массива В}
min := b [ 1 , 1 ]; for i := 1 to n do
if min > b [ i , 1 ] then min := b [ i , 1 ];
Writeln ( ' Минимальная зарплата за первый месяц= ' , min : 8 : 2 ); end.
Ввод исходных данных и результат расчета для тестового варианта показан на рис. 2.17.

Рис. 2.17. Результат работы программы

Рис. 2.18. Блок-схема алгоритма решения задачи
Варианты заданий
Таблица 2.18

|
Ÿ выполнить задание в соответствии с номером варианта; Ÿ провести расчёты для N=4, M=3 и следующих значений заработной платы: Ü номер месяца
Ý номер работника |
|
|
Вариант |
Задание |
|
1 |
Определить наибольшее значение заработной платы работника с номером 2. |
|
2 |
Определить среднюю заработную плату работника с номером N. |
|
3 |
Определить наибольшее значение заработной платы за месяц с номером 1. |
|
4 |
Вывести на экран номера работников, заработная плата которых за месяц с номером 1 составила больше 6000 руб. |
|
5 |
Вывести на экран номера месяцев, заработная плата за которые у работника с номером 1 составила меньше10000 руб. |
|
6 |
Определить суммарную заработную плату за месяц с номером 1. |
|
7 |
Определить суммарную заработную плату за месяц с номером М. |
|
8 |
Определить количество месяцев, за каждый из которых заработная плата работника с номером 1 составила больше 6000 руб. |
|
9 |
Определить наименьшее значение заработной платы работника с номером 1. |
|
10 |
Определить количество работников, заработная плата которых за месяц с номером 1 составила больше 6000 руб. |
|
11 |
Определить среднее значение заработной платы за весь период среди всех работников. |
|
12 |
Определить наименьшее значение заработной платы работника с номером N. |
1 2 3 1 5000 7000 11000 2 8000 12000 13000 3 11000 4000 12000 4 4000 5000 5000
|
13 |
Определить наибольшее значение заработной платы за месяц с номером М. |
|
14 |
Определить наибольшее значение заработной платы работника с номером 1. |
|
15 |
Определить суммарную заработную плату за месяц с номером 1. |
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.