Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
При работе с массивами рекомендуется опробовать механизм использования массивов переменной размерности. Если (например, в Паскале) при объявлении массивов размерность задается константами, следует объявлять максимально разумные размерности, а затем вводить переменные размерности и циклы организовывать уже по ним.
Обращаем внимание на аккуратность использования индексов: общепринято в матрицах, например, первым индексом обозначать номер строки, а вторым — номер столбца (или количество соответственно).
При обработке массивов (вводимых с клавиатуры или генерируемых случайно) рекомендуется использовать «эхопечать» — вывод на дисплей всего введенного массива в наглядной форме, с рациональным использованием площади:экрана — для визуального контроля правильности ввода и демонстрации соответствия результатов введенным данным.
Следует максимально ограничивать себя в выделении дополнительных (рабочих) массивов размерности того же порядка, что и обрабатываемые, а также искать эффективные по трудоемкости алгоритмы: во многих задачах возможно решение за один проход (просмотр) массива, хотя провокационно напрашивается многопроходный алгоритм. Кроме того, в «пассивных» задачах, посвященных анализу или поиску в заданном массиве, следует воздерживаться от искажений массива и своих целях.
Пример. Реализуем на массивах выполнение строевых команд «ряды сдвой» и «сомкнись». То есть из массива А(2п) элементы с четными индексами нужно перенести в начало массива В(п), а оставшиеся — сдвинуть к началу массива А.
Пересылка из A в B очевидна и выполняется в одном цикле с пересчетом индексов. Для удаления образовавшихся «пустот» в А возможны следующие подходы:
■ передвинуть все элементы, начиная с 3-го и до конца, на одну позицию, затем начиная с 5-го — еще на одну позицию, и так далее — за несколько проходов исходного массива;
■ передвигать каждый элемент массива А на новое место, вычисляя каждый раз, на сколько позиций он сдвинется — при этом требуется только один проход;
■ совместить пересылку в В со сдвигом в А — все в одном цикле.
Промоделируйте каждый из этих подходов, представив себя в роли командира солдат. Очевидно, наиболее эффективен третий прием, он и реализован в предлагаемой программе.
Испытывать эту программу можно на любом массиве (размерностью до 20) любых разнородных чисел (желательно, не более чем 3-разрядных — для удобства восприятия результатов).
Задачи по теме «Простейшие операции над массивами»
4.1 (5 б.) Разделение по знаку. В массиве С(п) подсчитать количество отрицательных и сумму положительных элементов.
4.2 (5 б.) Из строки в матрицу. Элементы одномерного массива А(пг) построчно расположить в матрице В(п,п).
Среднее значение. В задачах 4.3-4.5 использованы элементы математической статистики.
4.3 (6 б.) Центрирование массива. От каждого из заданных т чисел x ,x2,.-.,xm отнять их среднее арифметическое:
Результаты разместить на месте исходных данных.
4.4 (6 б.) Дисперсия — 1. Вычислить среднее значение х и дисперсию dx для заданного массива Х(к) наблюдений:
4.5 (6 б.) Дисперсия — 2. Вычислить среднее значение х и дисперсию dx для заданного массива Х(к) наблюдений более эффективным (по сравнению с предыдущей задачей) способом, за один проход массива:
4.6 (6 б.) Угол между векторами. Найти угол между векторами А(п) и В(п), используя формулу:
Преобразование элементов матриц и векторов: задачи 4.7-4.10
4.7 (6 б.) В матрице Z(m, m) каждый элемент разделить на диагональный, стоящий в том же столбце.
4.8 (7 б.) В массиве С(т) каждый третий элемент заменить полусуммой двух предыдущих, а стоящий перед ним — полусуммой соседних с ним элементов. Дополнительный (рабочий) массив не использовать.
4.9 (6 б.) В матрице А(т, п) все ненулевые элементы заменить обратными по величине и противоположными по знаку.
4.10 (7 б.) Найти среднее арифметическое элементов каждой строки матрицы Q(l, m) и вычесть его из элементов этой строки.
Дата публикования: 2015-11-01; Прочитано: 1323 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!