- •1. Краткие теоретические сведения
- •1.1. Переменные с индексами и массивы
- •1.2. Описание массивов в программах
- •1.3. Динамические массивы
- •1.4. Программирование вычислительных процессов, содержащих одномерные массивы (Алгоритмы обработки одномерных массивов)
- •1.4.1. Инициализация массива
- •1.4.2. Формирование и вывод массива
- •1.4.3. Ввод – вывод статического одномерного массива
- •1.4.4. Ввод – вывод динамического одномерного массива
- •1.4.5. Суммирование элементов одномерного массива
- •1.4.6. Табуляция значений функции, аргумент которой – одномерный массив
- •1.4.7. Поиск минимального и максимального значений одномерного массива
- •1.4.8. Сортировка значений одномерного массива по возрастанию (убыванию) методом попарного сравнения
- •1.4.9. Сортировка значений одномерного массива по возрастанию (убыванию) методом нахождения минимума (максимума)
- •Нахождения минимума для примера 10.8
- •1.4.10. Перестановка двух элементов массива
- •1.4.11. Вычисление суммы элементов массива
- •1.4.12. Подсчет количества элементов массива, удовлетворяющих заданному условию
- •1.4.13. Вычисление произведения элементов массива
- •1.4.14. Поиск элементов, обладающих заданным свойством
- •1.4.15. Поиск в упорядоченном массиве
- •1.4.16. Поиск минимального и максимального элемента массива и его порядкового номера (индекса)
- •1.4.17. Копирование массивов
- •1.4.18. Формирование нового массива
- •1.4.19. Примеры решения задач по обработке одномерных массивов
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1. Вычисление сумм, количеств и произведений элементов массива
- •2.4.1.1. Условие задания
- •2.4.1.2. Пример для варианта 30
- •2.4.1.3. Программа
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Поиск минимального и максимального элементов массива
- •2.4.2.1. Условие задания
- •2.4.2.2. Пример для варианта 30
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Формирование новых массивов
- •2.4.3.1. Условие задания
- •2.4.3.2. Пример для варианта 30
- •2.4.3.3. Программа
- •2.4.3.4. Тестирование
- •2.4.4. Задание 4. Обработка упорядоченных массивов
- •2.4.4.1. Условие задания
- •2.4.4.2. Пример для варианта 30
- •2.4.4.3. Программа
- •2.4.4.4. Тестирование
- •2.4.5. Задание 5. Задачи, сводящиеся к обработке одномерных массивов
- •2.4.5.1. Условие задания
- •2.4.5.2. Пример для варианта 30
- •2.4.5.3. Программа
- •2.4.5.4. Тестирование
- •2.4.6. Задание 6. Комбинированные задачи
- •2.4.6.1. Условие задания
- •2.4.6.2. Пример для варианта 30
- •2.4.6.3. Программа
- •2.5.1.2. Пример для варианта 30
- •2.5.1.3. Программа
- •2.5.1.4. Тестирование
- •2.5.2. Задание 8. Комбинированные задания
- •2.5.2.1. Условие задания
- •Варианты заданий
- •5. Пример решения задачи (вариант 30)
- •2.5.2.2. Разработка алгоритма.
- •2.5.2.3. Определение переменных программы
- •2.5.2.4. Разработка текста программы
- •2.5.2.5. Программа
- •2.5.2.6. Отладка программы
- •2.5.2.7. Результаты работы программы
- •2.5.3. Задание 9. Комбинированные задания
- •2.5.3.1. Варианты заданий
- •2.5.3.2. Пример программы обработки динамических массивов
- •2.5.3.3. Программа
- •2.5.3.4. Тестирование
- •2.5.4. Задание 10. Вычисления элементов вектора по формуле
- •2.5.4.2. Пример для варианта 30
- •2.5.4.3. Программа
- •2.5.5.4. Тестирование
- •2.5.5. Задание 11. Вычисления сумм и произведений векторов
- •2.5.5.2. Пример для варианта 30
- •2.4.11.3. Программа
- •2.5.5.4. Тестирование
- •2.5.6. Задание 12. Произвольные задачи
- •2.5.6.2. Пример для варианта 30
- •2.5.6.3. Программа
- •2.5.6.4. Тестирование
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Переменные с индексами и массивы 2
1.4.16. Поиск минимального и максимального элемента массива и его порядкового номера (индекса)
Пусть требуется найти минимальный элемент (min) и его индекс (n_min) во всем массиве (in=0 и ik=n) или какой то его части (с in – го по ik – ый), в этом случаи алгоритм решения задачи можно записать так:
1. в качестве начального значения переменной min выберем любой из рассматриваемых элементов (обычно выбирают первый). Тогда min=ain, n_min= in;
93
2. затем в цикле по параметру i начиная со следующего элемента (i=in+1, …, ik) будем сравнивать элементы массива ai текущим минимальным min. Если окажется, что текущий (i – ый) элемент массива меньше минимального (ai < min), то переменная min принимает значение ai, а n_min – на i: min=ai, n_min= i.
Графическая схема алгоритма и фрагмент программы поиска минимального элемента в массиве приведены на рис. 10.19.
|
|
min=a[in]; n_min=in; for(i=in+1; i<ik; i++) if(a[i]<min) { min=a[i]; n_min=i; }
|
|
Рис. 10.19. Графический алгоритм и фрагмент программы поиска минимального элемента в массиве |
|
|
|
Заметим, что при наличии в массиве нескольких минимальных элементов, найден будет первый из них (самый левый минимальный элемент) при просмотре массива слева направо. Если в неравенстве ai< min знак > поменять на знак ≥, то будет найден последний из них (самый правый минимальный элемент).
Для поиска максимального элемента max и его индекса n_max используется аналогичный алгоритм, в котором сначала надо принять max =ain, n_ max = in, вместо неравенства ai < min используется неравенство ai > max. В случаи выполнения условия ai > max записать в max =ai и в n_ max = i.
Для поиска в массиве экстремума можно не использовать вспомогательную переменную min (max). В этом случаи минимальный элемент массива определяется только по его индексу n_min (n_max) (рис. 10.20).
|
|
/*поиск минимального элемента*/ n_min=in; for(i=in+1; i<ik; i++) if(a[i]<a[n_min]) n_min=i; /*поиск максимального элемента*/ n_max=in; for(i=in+1; i<ik; i++) if(a[i]>a[n_max]) n_max=i;
|
|
Рис. 10.20. Графический алгоритм и фрагмент программы поиска минимального элемента в массиве по его индексу |
|
|
|
Пример использования рассмотренных алгоритмов представлен в приложении 2.
1.4.17. Копирование массивов
В ряде задач для организации дополнительных или промежуточных вычислений, требуется создание копии всего массива или части его элементов. Для этого можно воспользоваться алгоритмом представленным на рисунке 10.21.
|
|
k=0; for(i=in;i<ik;i++) { y[k]=a[i]; k++; }
|
|
Рис. 10.21 Алгоритм и фрагмент программы создания копии массива |
|
|
|
В зависимости от параметров in и ik, в массив y[ ] копируются элементы из исходного массива a[ ]. Так для копирования всех элементов массива a[ ] необходимо задать in=0, ik=n (n – количество элементов массива a[ ]). При копировании части массива, например с 3 по 9, принимаем in=2 (поскольку нумерация элементов массива в С++, начинается с нуля) и ik=9.