|
|||
Практическая работа. Разработка и отладка приложений с одномерными массивамиПрактическая работа Разработка и отладка приложений с одномерными массивами Цель работы: овладеть основными приемами работы с одномерными массивами. Ход работы: Массив – это структурированный тип данных. Массив состоит из нескольких элементов. Ко всему массиву можно обращаться по его имени. Можно обращаться к его элементу, но для этого надо задать индекс (номер). Например, в гардеробе имеется массив верхней одежды, сданный на хранение, но гардеробщица выдает одежду только по номерку. Массивы бывают одномерные и многомерные. Для объявления массива необходимо задать типы его индексов и компонент: ARRAY [Тип индексов] OF <Тип компонент>; Тип компонент массива – это просто тип данных, ассоциированный с каждой компонентой массива. Тип компонент может быть любым REAL, INTEGER, CHAR, BOOLEAN, перечислимым, интервальным. В качестве компоненты массива может быть взят и тип массив. Тип индекса должен быть одним из упорядоченных типов, т. е. любым скалярным типом, кроме REAL: INTEGER, CHAR, интервальный, перечислимый. Тип индекса определяет границы изменения индекса. Если сделана попытка использовать несуществующую компоненту, то возникает ошибка (ошибка неверного индекса). Одномерный массив можно задать (объявить) двумя способами: 1. C помощью служебного слова TYPE описывается тип массива, а затем с помощью VAR вводится переменная этого типа. Общая форма записи TYPE <тип массива> = ARRAY [тип индекса] OF <тип компонент>; VAR <переменная>: <тип массива>; 2. С помощью слова VAR сразу описывается переменная типа массив. Общая форма записи VAR <переменная>: ARRAY [тип индекса] OF <тип компонент>; Например, объявление массива из 100 элементов типа REAL можно осуществить двумя способами: 1. type R100 = array [1..100] of real; var A: R100; 2. var A: array [1..100] of real. Здесь задан массив с именем А, и его элементы имеют имена: А[1],…,A[100]. Чаще всего для типа индекса используют интервальный тип на основе типов INTEGER и CHAR. Однако можно в качестве индексов брать перечислимый тип. П р и м е р 1. Подсчет числа вхождений букв в текст определенной длины. program COUNTER; var COUNT: array ['a'..'z'] of integer; CH: char; N: integer; begin for CH := 'a' to 'z' do COUNT [CH] := 0; N := 0; repeat read (CH); N := N + 1; if (CH >= 'a') and (CH <= 'z') then COUNT [CH] := COUNT [CH] + 1; until CH = '.'; for CH := 'a' to 'z' do writeln (CH, COUNT [CH]:5); end. Пояснение. В этом примере тип индекса есть интервальный тип на базе типа CHAR, а тип компонент есть целое число. Таким образом, элементы массива – числа, а их индексы – буквы, т. е. число элементов массива равно 26 (по числу букв латинского алфавита). Рассмотрим теперь случай, когда тип индекса задан перечислимым типом, а компоненты массива представлены компонентами интервального типа на базе типа INTEGER. П р и м е р 2. Присваивание переменной с именем месяца числа дней этого месяца. program NUMBRDAY; type MONAT = (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OKT, NOV, DEC); var DAY : array [MONAT] of 28..31; T : MONAT; begin for T := JAN to DEC do case T of JAN, MAR, MAY, JUL, AUG, OKT, DEC: DAY [T] := 31; APR, JUN, SEP, NOV: DAY [T] := 30; FEB : DAY [T] := 28; end; end.
Выполнить отладку тестовых примеров. Варианты заданий Составить программу, позволяющую в одномерном массиве, состоящем из N вещественных элементов, вычислить: 1. В массиве из случайных N вещественных чисел найти максимум, минимум и поменять их местами. 2. В массиве из случайных N целых чисел найти сумму отрицательных и сумму положительных чисел. Вывести на экран индексы нулевых элементов или сообщение о том, что таких элементов нет. 3. В массиве из случайных N вещественных чисел найти сумму всех чисел меньше К и заменить их нулями. 4. В массиве из случайных N целых чисел найти количество положительных и количество отрицательных чисел. 5. В массиве из случайных N вещественных чисел найти числа, лежащие в диапазоне от А до В. Вывести массив, отсортированный по возрастанию. 6. В массиве из случайных N целых чисел найти числа кратные двум. Вывести массив, отсортированный по убыванию. 7. В массиве из случайных N вещественных чисел заменить все отрицательные числа нулями. Среди положительных найти минимальное и максимальное. 8. В массиве из случайных N целых чисел найти среднее арифметическое положительных чисел и среднее арифметическое отрицательных чисел. 9. В массиве из случайных N вещественных чисел заменить поменять знак числа на противоположный, а для нулевых элементов (если такие есть) подсчитать их количество. 10. В массиве из случайных N целых чисел найти все числа большие некоторого К и среди них подсчитать количество четных и нечетных. 11. В массиве из случайных N вещественных чисел найти все числа меньшие (min+max)/2 и округлить их до целого. Отсортировать массив по возрастанию. 12. В массиве из случайных N целых чисел найти все числа большие (min+max)/2 и вывести их индексы. Отсортировать массив по убыванию. 13. В массиве из случайных N целых чисел замените каждый элемент массива суммой всех последующих. 14. В массиве из случайных N вещественных чисел найти количество отрицательных и сумму положительных чисел. Обрезать вещественные числа до целых. Отсортировать массив по возрастанию. 15. В массиве из случайных N целых чисел вывести числа, не лежащие в диапазоне от А до В. Подсчитать их количество. Вывести массив, отсортированный по убыванию. 16. Из диапазона всех ASCII-кодов вывести символы цифр. 17. Из диапазона всех ASCII-кодов вывести символы заглавных русских букв. 18. Из диапазона всех ASCII-кодов вывести символы заглавных английских букв. 19. Из диапазона всех ASCII-кодов вывести символы строчных русских букв. 20. Из диапазона всех ASCII-кодов вывести символы строчных английских букв.
Содержание отчета 1. Постановка задачи. 2. Описание алгоритма. 3. Тестовые примеры и анализ результатов тестирования. 4. Вывод.
|
|||
|