Процедурное программирование на языке С. Часть 2. Указатели на объекты. Многоуровневая адресация: Методические указания к лабораторным работам по курсам «Алгоритмические языки и программирование» и «Процедурное программирование», страница 5

                scanf("%d",&end);

          }

}

Замечание. Функция formula() возвращает адрес либо адрес функции form_Simps(), либо адрес функции form_ trap(). Важно, что 2 последние функции, типы возвращаемых значений которых  совпадают, имеют одинаковые списки формальных параметров, т.е. одинаковое количество параметров, типы которых попарно совпадают.


КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАНИЯ

1. Переписать программу из примеров 4.1  –  4.3, добавив дополнительные функции для приближенного интегрирования:

·  f(X) = ,   [a,b] = [0,1];

·  f(X) =,   [a,b] = [0,1];

·  f(X) =ln(1 + ),   [a,b] = [0,1.2].

2. Описать функцию для приближенного вычисления определенного интеграла по формуле Ньютона (правилу трех восьмых) и использовать ее в программе, изменив по необходимости функции из примера 4.4. Для подынтегральных выражений использовать  функции из примера 4.1.

Правило трех восьмых (количество узлов, n, должно удовлетворять условию: n =3m, где – m натуральное число):

 ≈ .

Здесь h = (b – a)\n,  = a, == b,  = a + ih  для  i  = .

3. Написать  оператор объявления указателя на функцию, которая не имеет параметров и  возвращает адрес целочисленного массива.

4. Написать  заголовок функции_1, возвращающей переменную типа float. Первый формальный параметр функции – указатель на переменную типа int, второй –  указатель на функцию_2, которая не имеет параметров и возвращающую адрес массива переменных типа float.

5. Объявить массив из N указателей на функции, каждая из которых при вызове получает адрес строки, целое число и символ.  В точки вызова функции ничего не возвращают.

6. Объявить массив из K указателей на функции, каждая из которых при вызове получает адрес  строки и адрес целого числа.  В точки вызова функции  возвращают адрес функции без параметров, возвращающей символ.


ЛАБОРАТОРНАЯ  РАБОТА  5

Целью лабораторной работы  5 является освоение приемов многоуровневой адресации для передачи объектов разного типа между функциями.

ВАРИАНТЫ  ЗАДАНИЙ

Вариант 1. В программе описать 3 функции.

Функция f1()  осуществляет ввод m,  n размеров одномерных массивов,  а[i] и b[i] значений элементов  массивов  (предварительно под массивы в теле функции динамически выделяется память),  передает в главную m, n, a[i], i=1,...m, и b[i], i=1,...n.

Функция f2(),  получая через параметры одномерный массив, динамически выделяет память под новый  массив  (каждый  элемент  нового массива  соответствующий элемент исходного,  возведенный в степень 3) и передает главной  «информацию» о новом массиве и его максимальном элементе.

Главная функция получает размеры массивов и значения их элементов после вызова f1(),  дважды вызывает f2(),  сравнивает  полученные максимальные элементы и выводит на экран элементы того массива, максимальный элемент которого больше.

Вариант 2. В программе описать 3 функции.

Функция f1()  осуществляет  ввод  m-размера  одномерного  массива, а[i]  – значений элементов массива (предварительно под массив в теле функции динамически выделяется память),  передает в главную  mи a[i], i=1,...m.

Функция f2(), получая через параметры одномерный массив, динамически выделяет  память под новый массив (инвертируемый исходный)   и передает главной функции «информацию» о новом массиве. Тип возвращаемого функцией значения  –  void.

Главная функция получает размер массива и значения его  элементов через f1(), вызывает f2()  и выводит на экран элементы нового массива, полученные как разности элементов исходного массива и инвертированного.

Вариант 3. В программе описать 3 функции.

Функция f1()  осуществляет ввод m,  n размеров одномерных массивов,  а[i] и b[i] значений элементов  массивов  (предварительно под массивы в теле функции динамически выделяется память),  передает в главную m, n, a[i], i=1,...m, и b[i], i=1,...n.

Функция f2(), получая через параметры одномерный массив, осуществляет поиск минимального элемента массива и передает его в  точку вызова.