Функция f1(), тип функции – void, получая через параметры одномерный массив, определяет количество четных номеров элементов массива, формирует новый массив, состоящий из этих элементов, передает в точку вызова размер нового массива и значения его элементов.
Вариант 24. В программе описать 3 функции.
Функция f1(), тип функции – void, осуществляет ввод m – размера одномерного массива, а[i] – значений элементов массива (предварительно под массив в теле функции динамически выделяется память), передает в главную m, a[i], i=1,...m, а также a_max2, второй по величине элемент массива, который определяется в функции f1() после 2-х вызовов функции f2().
Функция f2(), получая через параметры одномерный массив, осуществляет поиск и возврат в точку вызова значение его максимального элемента.
Главная функция получает размер массива, значения всех его элементов (а также a_max2) после вызова f1(), увеличивает каждый элемент массива на a_max2 и выводит на экран элементы нового массива.
Вариант 25. В программе описать 3 функции.
Функция f1() осуществляет ввод m – размера одномерного массива, а[i] –значений элементов массива (предварительно под массив в теле функции динамически выделяется память), передает в главную m и a[i], i=1,...m.
Функция f2(), получая через параметры одномерный массив, динамически выделяет память под новый массив. Каждый элемент нового массива – это адрес соответствующего элемента исходного массива.
Главная функция получает размер массива и значения его элементов после вызова f1(), вызывает f2() и выводит на экран элементы нового массива, сформированного в f2().
ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ
5.1. КОНЦЕПЦИЯ МНОГОУРОВНЕВОЙ АДРЕСАЦИИ
Многоуровневая адресация необходима для
· передачи значений нескольких объектов из вызываемой функции в вызывающую с использованием адресов этих объектов;
· моделирования многомерных массивов (и динамических, и статических).
В соответствии с оператором объявления переменных simи A_simс инициализацией charsim = ‘R’, * A_sim = ∼
в оперативной памяти будет выделено 2 участка:
simA_sim
|
|||
32000 15000 15001
Для хранения адреса переменной A_sim необходимо объявить переменную-указатель AA_sim. В соответствии с синтаксисом языка С в операторе объявления переменной-указателя
<спецификация типа > * <имя переменной>; объявляется переменная с
именем, которая является
указателем на переменную
типа
В данном случае <имя переменной> – это идентификатор, соответствующий переменной AA_sim, предназначенной для хранения адреса переменной A_sim, тип которой – char *, поэтому в качестве <спецификации типа> используется char *. Таким образом, оператор объявления переменной с инициализацией имеет вид: char * * AA_sim = &A_sim;
и в оперативной памяти добавится третий участок:
simA_sim AA_sim
|
32000 15000 15001 15002 15003
Последний оператор объявления демонстрирует двухуровневую адресацию: значением переменной-указателя AA_simявляется адрес переменной-указателя A_sim, значением которой является адрес переменной символьного типа.
Аналогично можно объявить переменную ptr, предназначенную для хранения адреса переменной AA_sim : char * * * ptr = &AA_sim;
тогда в оперативной памяти добавится четвертый участок:
simA_sim AA_sim ptr
|
32000 15000 15001 15002 15003 15004 15005
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.