Разработать алгоритм, написать, отладить и выполнить программу, обрабатывающую массив. В программе должен быть реализован интерфейс пользователя, обеспечивающий работу с массивом (ввод данных, обработка и вывод результата).
Составить отчет. Отчет должен содержать:
1. Постановка задачи.
2. Схема программы (модуля, процедуры) по согласованию с преподавателем.
3. Текст программы с комментарием.
4. Тестовый пример.
Защитить отчет.
Варианты заданий
Задачи, предлагаемые для решения, двух уровней. Первый уровень – обработка одномерного массива. Предполагает оценку не выше «хорошо».
Второй уровень – обработка двухмерного массива. Предполагает оценку «отлично». Теоритические ведения, необходимые при разработке проекта, смотреть в приложении 1.
Варианты первого уровня.
1. Переставить первый отрицательный и последний положительный, если таких нет, то сообщить об этом.
2. Поменять местами первый максимальный и последний минимальный элементы.
3. Элемент, стоящий перед 0, заменить на заданное число А. Если нулю равен первый элемент массива, то заменить числом А последний элемент массива.
4. Найти количество элементов больших среднего арифметического элементов данного массива.
5. Найти среднее арифметическое положительных элементов.
6. Получить новый массив В, в котором элементы равны произведению элементов массива А на их номера.
7. Разделить все элементы массива на заданное число. Исходный массив не изменять.
8. Заменить значения всех элементов таблицы суммой всех предыдущих элементов.
9. Увеличить значения каждого элемента таблицы на сумму всех предыдущих элементов.
10. Составить алгоритм, увеличивающий все элементы таблицы, значения которых меньше -10, на 5 .
11. Составить алгоритм, находящий сумму элементов между первым и вторым элементами таблицы, имеющими нулевое значение.
12. Составить алгоритм, уменьшающий все элементы таблицы, значения которых меньше 40, но больше 10 , на 15
13. Составить алгоритм, определяющий, сколько раз в таблице встречаются случаи, когда соседние элементы имеют различные знаки.
14. Составить алгоритм, находящий сумму элементов и их количество до первой перемены знака.
15. В заданной целочисленной таблице найти элементы, сумма которых равна данному числу, в предположении, что такие существуют.
16. Дана таблица. Составить алгоритм, находящий в ней произведение элементов, значения которых больше 10.
17. Составить алгоритм, находящий номер последнего положительного элемента в таблице.
18. Составить алгоритм, находящий сумму элементов таблицы, значение которых больше 5, а номера кратны трем.
19. Составить алгоритм, находящий номер второго отрицательного элемента в таблице.
20. Составить алгоритм, подсчитывающий количество различных элементов в таблице.
Варианты второго уровня.
1. В заданной матрице определить максимальные значения в каждой строке и минимальные значения в каждом столбце. Разместить их в двух массивах Максима[n] и Минимум[n].
2. В заданной матрице определить сумму каждой строки и произведение каждого столбца. Разместить их в двух массивах Сумма[n] и Произведение[n].
3. В заданной матрице определить произведение отрицательных значений в каждом столбце. Организовать из них массив.
4. Найти сумму и количество положительных элементов, лежащих выше главной диагонали, в каждом столбце матрицы.
5. В заданной матрице каждый элемент столбца разделить на максимальное значение в этом столбце. Новый массив вывести на печать.
6. В заданной матрице определить сумму минимальных значений каждой строки. Организовать из них массив.
7. В заданной матрице определить произведение положительных значений в каждом столбце. Организовать из них массив.
8. В заданной матрице определить сумму максимальных значений каждого столбца. Организовать из них массив.
9. В заданной матрице каждый элемент столбца разделить на минимальное значение в этом столбце. Новый массив вывести на печать.
10. В каждой строке поменять местами первый элемент и максимальный по модулю.
11. В каждой строке переставить первый отрицательный и последний положительный, если таких нет, то сообщить об этом.
12. Дана матрица. Составить новую матрицу элементы первой строки, которой равны количеству отрицательных элементов, а элементы второй строки - сумме отрицательных элементов соответствующего столбца исходной матрицы.
13. Дана матрица. Составить таблицу, каждый элемент которой равен максимальному элементу соответствующей строки матрицы.
14. Для заданной квадратной матрицы сформируйте одномерную таблицу из её диагональных элементов.
15. Дана матрица. Составить таблицу, каждый элемент которой равен среднему арифметическому отрицательных элементов соответствующего столбца матрицы.
16. Дана матрица. Составить таблицу, каждый элемент которой равен количеству элементов, значения которых больше заданного числа А, соответствующей строки матрицы.
17. В квадратной матрице для каждой строки найти минимальный элемент и переставить его с элементом, стоящим в этой строке на главной диагонали.
18. В квадратной матрице найти сумму положительных элементов, лежащих на и выше главной диагонали и расположенных в четных столбцах.
19. Дана матрица. Элементы первой строки - количество осадков в соответствующий день, второй строки - сила ветра в этот день. Найти, был ли в эти дни ураган? (ураган - когда самый сильный ветер был в самый дождливый день).
20. Седловой точкой матрицы называется элемент, являющийся наименьшим в своей строке и одновременно наибольшим в своём столбце. Для заданной матрицы составить алгоритм, находящий индексы седловой точки.
Приложение 1
Работа с таблицами
TStringGrid – текстовая таблица
Компонент TStringGrid предназначен для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. Таблица делится на две части – фиксированную и рабочую. Фиксированная часть служит для показа заголовков колонок и рядов, а так же для ручного управления их размерами. Обычно фиксированная часть занимает левую колонку и верхний ряд таблицы, однако с помощью свойств FixedCols и FixedRows можно задать другое количество фиксированных колонок и рядов.
Рабочая часть – это остальная часть таблицы. Она может содержать произвольное количество колонок и рядов, более того, эти величины могут изменяться программно. Если рабочая часть таблицы не помещается целиком на экране, то автоматически появляется полоса прокрутки.
Свойства компонента:
Свойство
Описание
BorderStyle
Определяет рамку компонента: bsNone – нет рамки, bsSingle – рамка толщиной 1 пиксел
Cells[col,row]
Определяет содержимое ячейки с табличными координатами (col,row)
Col
Содержит номер колонки с ячейкой, имеющей фокус ввода
ColCount
Содержит количество колонок таблицы
ColWidths
Содержит ширину колонки с индексом Index
EditorMode
Разрешает/запрещает редактирование ячеек. Игнорируется, если свойство Options включает значение goAlwayseShowEditor или не включает значение goEditing
FixedColor
Определяет цвет фиксированной зоны
FixedCols
Определяет количество колонок фиксированной зоны
FixedRows
Определяет количество рядов фиксированной зоны
GridHeight
Содержит значение высоты таблицы
GridLineWidth
Определяет ширину линий, расчерчивающих таблицу
GridWidth
Содержит значение ширины таблицы
Row
Содержит номер ряда ячейки, имеющий фокус ввода
RowCount
Содержит количество рядов таблицы
RowHeights
Содержит значение высоты ряда с индексом Index
Rows
Содержит все текстовые строки ряда с индексом Index
ScrollBars
Определяет полосы прокрутки: ssNone – нет полос; ssHorizontal – в таблицу вставляется горизонтальная полоса; ssVertical – вставляется вертикальная полоса; ssBoth – вставляются обе полосы.
Для обращения к ячейке [0,0] нужно использовать свойство Cells: