Delphi. Лабораторная работа № 4.2 (4 часа).

«Программирование с использованием прямоугольных массивов».

Цели:

  • Научиться разрабатывать приложения, в которых отображаются и обрабатываются прямоугольные массивы данных;
  • Закрепить навыки использования компонента StringGrid для хранения и отображения структурированных данных.

 

Ход работы:

1. Изучить (повторить) теоретический материал:

 

2. В состав задания на данную работу входит 2 задачи, каждая из которых оценивается в 5 баллов. Для отображения массивов на форме использовать компонент StringGrid, из которого необходимо прочитать данные для обработки в численный массив, определив его в программе. Для решения задач можно создать два отдельных проекта, или объединить их в один.

3. Выбрать из списка номер вашего варианта и прочитать условия задач:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

4. Если возникли вопросы по условиям задач, задайте их преподавателю.

5. Скачать, распаковать, открыть и внимательно изучить пример: скачать архив.

6. Разработать приложения для решения задач своего варианта.

7. Протестировать программы.

8. Оформить отчет по лабораторной работе. Для этого следует в строке заголовка главной формы записать:

"ЛР N. Вариант N. Группа. Фамилия Имя." В начале программного модуля главной формы записать как комментарий:

 

9. Сдать преподавателю выполненную работу:

 

10. Оценки по проверенным работам можно посмотреть в электронном журнале:


Индивидуальные задания

Вариант 1.

1. Составить программу формирования прямоугольного массива А из n строк и m столбцов случайными числами, сделать возможным его редактирование. Вычислить сумму элементов k-го столбца.

2. Дана одна страница учебного журнала некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру урока). Отсутствие оценки за урок в численном массиве обозначить значением 0, в строковом массиве StringGrid.Cells - пустая строка. Отсутствие учащегося на уроке в численном массиве обозначить значением -1, в строковом массиве StringGrid.Cells - буквой "н". Вычислить средний балл для каждого учащегося и средний балл всей группы. 

Вариант 2.

1. Составить программу формирования прямоугольного массива А из n строк и m столбцов случайными числами, сделать возможным его редактирование. Вычислить сумму элементов k-й строки.

2. Дана сводная ведомость выплаты заработной платы n рабочим за m месяцев (номер строки соответствует порядковому номеру рабочего, номер столбца - порядковому номеру месяца). Определить номер рабочего с максимальным доходом за весь отчетный период.

Вариант 3.

 

1. Составить программу формирования прямоугольного массива А из n строк и m столбцов случайными числами, сделать возможным его редактирование. Вычислить среднее арифметическое элементов k-го столбца.

2. Дана одна страница учебного журнала некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру урока). Отсутствие оценки за урок в численном массиве обозначить значением 0, в строковом массиве StringGrid.Cells - пустая строка. Отсутствие учащегося на уроке в численном массиве обозначить значением -1, в строковом массиве StringGrid.Cells - буквой "н". Вычислить средний балл за каждый урок и средний балл группы за весь период.

 

Вариант 4.

1. Составить программу формирования прямоугольного массива А из n строк и m столбцов случайными числами, сделать возможным его редактирование. Определить количество положительных, отрицательных и нулевых элементов в массиве.

2. Дана сводная ведомость выплаты заработной платы n рабочим за m месяцев (номер строки соответствует порядковому номеру рабочего, номер столбца - порядковому номеру месяца). Определить номер рабочего с минимальным доходом за весь отчетный период.

Вариант 5.

1. Составить программу формирования прямоугольного массива А из n строк и m столбцов случайными числами, сделать возможным его редактирование. Определить номер строки с максимальной суммой элементов.

2. Дана одна страница учебного журнала некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру урока). Отсутствие оценки за урок в численном массиве обозначить значением 0, в строковом массиве StringGrid.Cells - пустая строка. Отсутствие учащегося на уроке в численном массиве обозначить значением -1, в строковом массиве StringGrid.Cells - буквой "н". Вычислить сумму пропущенных часов для каждого учащегося, общую сумму по всей группе и среднее значение (час/уч-ся). Учесть, что продолжительность каждого занятия состовляет 2 часа.

Вариант 6.

1. Составить программу формирования прямоугольного массива А из n строк и m столбцов случайными числами, сделать возможным его редактирование. Определить номер столбца с минимальной суммой элементов.

2. Даны необходимые данные для создания ведомости начисления заработной платы для n служащих некоторой организации. Номер строки соответствует порядковому номеру служащегося в алфавитном списке, 1-й столбец содержит квалификационный разряд (1<= r <= 16), 2-й столбец - коэффициент ставки (0,5<= k <=2), 3-й столбец - процент премиальных (0<= p <=50). Рассчитать сумму оклада для каждого служащего So = Sb * r * k; сумму премиальных Sp = So * p / 100 и общую сумму начисления S = So + Sp. Sb - это текущий размер базовой величины (задается как исходное данное).

Вариант 7.

1. Составить программу формирования прямоугольного массива А из n строк и m столбцов случайными числами, сделать возможным его редактирование. Определить номер строки с наименьшим количеством положительных элементов.

2. Дана одна страница учебного журнала некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру урока). Отсутствие оценки за урок в численном массиве обозначить значением 0, в строковом массиве StringGrid.Cells - пустая строка. Отсутствие учащегося на уроке в численном массиве обозначить значением -1, в строковом массиве StringGrid.Cells - буквой "н". Вычислить сумму пропущенных часов на каждом уроке, общую сумму за весь период и среднее значение (час/уч-ся). Учесть, что продолжительность каждого занятия состовляет 2 часа.

Вариант 8.

1. Составить программу формирования прямоугольного массива А из n строк и m столбцов случайными числами, сделать возможным его редактирование. Определить номер столбца с наибольшим количеством отрицательных элементов.

2. Даны необходимые данные для создания ведомости отчислений из заработной платы для n служащих некоторой организации. Номер строки соответствует порядковому номеру служащегося в алфавитном списке, 1-й столбец содержит значение начисленной суммы S. Рассчитать для каждого служащего прогрессивный процент подоходного налога Pn (9% - если S<=500 тыс. руб.; 12% - если 500 тыс. руб. < S <= 1.5 млн. руб.; 15% - если S > 1.5 млн. руб.), сумму подоходного налога (Sn = S * Pn / 100), сумму отчислений в пенсионный фонд Sp (1% от S)  и сумму к выдаче (Sv = S - Sn - Sp).

Вариант 9.

1. Составить программу формирования прямоугольного массива А из n строк и m столбцов случайными числами, сделать возможным его редактирование. Поменять местами i-ую и j-ую строку.

2. Дана одна страница учебного журнала некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру урока). Отсутствие оценки за урок в численном массиве обозначить значением 0, в строковом массиве StringGrid.Cells - пустая строка. Отсутствие учащегося на уроке в численном массиве обозначить значением -1, в строковом массиве StringGrid.Cells - буквой "н". Определить количество уч-ся, имеющих хотя бы одну неудовлетворительную оценку (1 - 4) и их процент от общего числа уч-ся.

Вариант 10.

1. Составить программу формирования прямоугольного массива А из n строк и m столбцов случайными числами, сделать возможным его редактирование. Поменять местами i-ый и j-ый столбец.

2. Дана таблица результатов футбольного турнира (номера строк и столбцов определяют номер команды). В ячейке (i, j) записано количество очков полученных i-й командой в игре с j-й командой (0 - проигрыш; 1 - ничья; 3 - победа). По главной диагонали в строковой таблице StringGrid записывается символ "х" (команда не играет сама с собой), в численном массиве на главной диагонали можно записать -1. Если матча еще не было, то соответствующие ячейки в строковой таблице StringGrid остаются пустыми, а в численном массиве в эти ячейки можно записать -2. Определить сумму набранных очков каждой командой и определить текущего лидера (или несколько лидеров с одинаковой суммой очков). Перед обработкой необходимо проверить корректность данных в таблице.

Вариант 11.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Вычислить сумму элементов, стоящих на главной и побочной диагонали.

2. Дана одна страница учебного журнала некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру урока). Отсутствие оценки за урок в численном массиве обозначить значением 0, в строковом массиве StringGrid.Cells - пустая строка. Отсутствие учащегося на уроке в численном массиве обозначить значением -1, в строковом массиве StringGrid.Cells - буквой "н". Определить количество уч-ся, у которых нет оценок ниже 7 и их процент от общего числа уч-ся.

 

Вариант 12.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Вычислить сумму элементов, стоящих выше главной и побочной диагонали.

2. Дана таблица результатов футбольного турнира (номера строк и столбцов определяют номер команды). В ячейке (i, j) записано количество очков полученных i-й командой в игре с j-й командой (0 - проигрыш; 1 - ничья; 3 - победа). По главной диагонали в строковой таблице StringGrid записывается символ "х" (команда не играет сама с собой), в численном массиве на главной диагонали можно записать -1. Если матча еще не было, то соответствующие ячейки в строковой таблице StringGrid остаются пустыми, а в численном массиве в эти ячейки можно записать -2. Определить для каждой команды количество побед, ничьих и поражений. Перед обработкой необходимо проверить корректность данных в таблице.

Вариант 13.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Вычислить сумму элементов, стоящих ниже главной и выше побочной диагонали.

2. Дана одна страница учебного журнала некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру урока). Отсутствие оценки за урок в численном массиве обозначить значением 0, в строковом массиве StringGrid.Cells - пустая строка. Отсутствие учащегося на уроке в численном массиве обозначить значением -1, в строковом массиве StringGrid.Cells - буквой "н". Определить количество уч-ся, имеющих только отличные оценки (9 - 10) и их процент от общего числа уч-ся.

Вариант 14.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Вычислить сумму элементов, стоящих выше главной и ниже побочной диагонали.

2. Дана итоговая таблица результатов футбольного турнира (номера строк и столбцов определяют номер команды). В ячейке (i, j) записано количество очков полученных i-й командой в игре с j-й командой (0 - проигрыш; 1 - ничья; 3 - победа). По главной диагонали в строковой таблице StringGrid записывается символ "х" (команда не играет сама с собой), в численном массиве на главной диагонали можно записать -1. Определить 2 команды с худшим результатом, которые покидают турнир. Обеспечить корректность данных в таблице.

 

Вариант 15.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Вычислить количество четных элементов в заданной строке.

2. Дана одна страница учебного журнала некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру урока). Отсутствие оценки за урок в численном массиве обозначить значением 0, в строковом массиве StringGrid.Cells - пустая строка. Отсутствие учащегося на уроке в численном массиве обозначить значением -1, в строковом массиве StringGrid.Cells - буквой "н". Упорядочить данные в порядке убывания среднего балла уч-ся, сохранив при этом их исходные порядковые номера.

Вариант 16.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Вычислить количество нечетных элементов в заданном столбце.

2. Дана итоговая таблица результатов футбольного турнира (номера строк и столбцов определяют номер команды). В ячейке (i, j) записано количество очков полученных i-й командой в игре с j-й командой (0 - проигрыш; 1 - ничья; 3 - победа). По главной диагонали в строковой таблице StringGrid записывается символ "х" (команда не играет сама с собой), в численном массиве на главной диагонали можно записать -1. Определить 2 команды с лучшим результатом, которые выходят из турнира в плей-офф. Перед обработкой необходимо проверить корректность данных в таблице.

 

Вариант 17.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Вычислить количество четных элементов выше k-ой строки и выше главной диагонали.

2. Дана одна страница учебного журнала некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру урока). Отсутствие оценки за урок в численном массиве обозначить значением 0, в строковом массиве StringGrid.Cells - пустая строка. Отсутствие учащегося на уроке в численном массиве обозначить значением -1, в строковом массиве StringGrid.Cells - буквой "н". Упорядочить данные в порядке возрастания количества пропущенных часов уч-ся, сохранив при этом их исходные порядковые номера. Учесть, что продолжительность одного занятия составляет 2 часа.

 

Вариант 18.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Вычислить количество нечетных элементов ниже k-ой строки и выше главной диагонали.

2. Дана итоговая таблица результатов футбольного турнира среди N команд в два круга (номер строки соответствует номеру команды, в столбцах последовательно записаны: количество побед, ничьих, поражений, забитых и пропущенных голов). Вычислить для каждой команды сумму набранных очков (0 - проигрыш; 1 - ничья; 3 - победа), разность забитых и пропущенных голов, упорядочить данные в порядке занятых мест, сохранив исходные номера команд (при равенстве очков учитывается разность забитых и пропущенных голов). Перед обработкой необходимо проверить корректность данных в таблице (количество игр у каждой команды должно быть равно 2N-2, суммарная разность забитых и пропущенных голов должна равняться 0).

Вариант 19.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Построить линейный массив B из модулей отрицательных элементов матрицы А.

2. Дана одна страница учебного журнала некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру урока). Отсутствие оценки за урок в численном массиве обозначить значением 0, в строковом массиве StringGrid.Cells - пустая строка. Отсутствие учащегося на уроке в численном массиве обозначить значением -1, в строковом массиве StringGrid.Cells - буквой "н". Определить количество оценок для каждого уч-ся и среднее значение количества оценок на одного уч-ся по всей группе.

Вариант 20.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Построить линейный массив B из средних арифметических строк матрицы А.

2. Дана таблица результатов хоккейного турнира (номера строк и столбцов определяют номер команды). В ячейке (i, j) записано количество очков полученных i-й командой в игре с j-й командой (0 - поражение; 1 - поражение в овертайме или по булидам; 2 - победа в овертайме или по булидам; 3 - победа). По главной диагонали в строковой таблице StringGrid записывается символ "х" (команда не играет сама с собой), в численном массиве на главной диагонали можно записать -1. Если матча еще не было, то соответствующие ячейки в строковой таблице StringGrid остаются пустыми, а в численном массиве в эти ячейки можно записать -2. Определить сумму набранных очков каждой командой и определить текущего лидера (или несколько лидеров с одинаковой суммой очков). Перед обработкой необходимо проверить корректность данных в таблице.

Вариант 21.

1. Составить программу формирования квадратной матрицы А n-го порядка (n строк и n столбцов) случайными числами, сделать возможным ее редактирование. Построить линейный массив B из сумм положительных элементов в столбцах матрицы А.

2. Дана сводная ведомость оценок за семестр уч-ся некоторой группы (номер строки соответствует порядковому номеру учащегося в алфавитном списке, номер столбца - порядковому номеру предмета). Вычислить средний балл (Sb) для каждого уч-ся за семестр и коэффициент для начисления стипендии (k), который равен: 0, если Sb<5; 1, если 5<=Sb<=6; 1.2, если 6<Sb<=7; 1.4, если 7<Sb<=9; 1.8, если Sb>9.

Вариант 22.

1. Составить программу формирования квадратных матриц А и В n-го порядка (n строк и n столбцов) случайными числами, сделать возможным их редактирование. Вычислить сумму матриц (матрица С, в которой Cij = Aij + Bij).

2. Дана таблица результатов хоккейного турнира (номера строк и столбцов определяют номер команды). В ячейке (i, j) записано количество очков полученных i-й командой в игре с j-й командой (0 - поражение; 1 - поражение в овертайме или по булидам; 2 - победа в овертайме или по булидам; 3 - победа). По главной диагонали в строковой таблице StringGrid записывается символ "х" (команда не играет сама с собой), в численном массиве на главной диагонали можно записать -1. Если матча еще не было, то соответствующие ячейки в строковой таблице StringGrid остаются пустыми, а в численном массиве в эти ячейки можно записать -2. Определить для каждой команды количество чистых побед, побед и поражений в овертайме или по булидам и поражений. Перед обработкой необходимо проверить корректность данных в таблице.

Вариант 23.

1. Составить программу формирования смежных матриц А (m строк, n столбцов) и В (n строк, l столбцов) случайными числами, сделать возможным их редактирование. Вычислить произведение матриц, это матрица С, в которой:

2. Дана сводная ведомость выплаты заработной платы n рабочим за m месяцев (номер строки соответствует порядковому номеру рабочего, номер столбца - порядковому номеру месяца). Вычислить размер средней заработной платы за месяц для каждого рабочего и общую по всему списку.

Вариант 24.

1. Составить программу формирования матриц А и В (n строк, m столбцов) случайными числами, сделать возможным их редактирование. Вычислить матрицу С = 2А + 3В.

2. Дана итоговая таблица результатов хоккейного турнира (номера строк и столбцов определяют номер команды). В ячейке (i, j) записано количество очков полученных i-й командой в игре с j-й командой (0 - поражение; 1 - поражение в овертайме или по булидам; 2 - победа в овертайме или по булидам; 3 - победа). По главной диагонали в строковой таблице StringGrid записывается символ "х" (команда не играет сама с собой), в численном массиве на главной диагонали можно записать -1. Определить 2 команды с лучшим результатом, которые проходят в плей-офф. Перед обработкой необходимо проверить корректность данных в таблице.

 

Вариант 25.

1. Составить программу формирования матрицы А (n строк, m столбцов) случайными числами, сделать возможным ее редактирование. Получить вектор B, присвоив его k-му элементу значение 0, если все элементы k-го столбца матрицы А нулевые, иначе 1.

2. Дана сводная ведомость выплаты заработной платы n рабочим за m месяцев (номер строки соответствует порядковому номеру рабочего, номер столбца - порядковому номеру месяца). Вычислить размер средней заработной платы за каждый месяц и общую по всему списку.

 

Вариант 26.

 

1. Составить программу формирования матрицы А (n строк, m столбцов) случайными числами, сделать возможным ее редактирование. Получить вектор B, присвоив его k-му элементу значение 1, если элементы k-й строки матрицы А упорядочены по убыванию, иначе 0.

2. Дана итоговая таблица результатов хоккейного турнира среди N команд в один круг (номер строки соответствует номеру команды, в столбцах последовательно записаны: количество побед, побед в овертайме или по булидам, поражений в овертайме или по булидам, поражений, забитых и пропущенных шайб). Вычислить для каждой команды сумму набранных очков (0 - поражение; 1 - поражение в овертайме или по булидам; 2 - победа в овертайме или по булидам; 3 - победа), разность забитых и пропущенных шайб, упорядочить данные в порядке занятых мест, сохранив исходные номера команд (при равенстве очков учитывается разность забитых и пропущенных шайб). Перед обработкой необходимо проверить корректность данных в таблице (количество игр у каждой команды должно быть равно N-1, суммарная разность забитых и пропущенных голов должна равняться 0).