Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подбельский Фомин_Программирование на языке СИ_...doc
Скачиваний:
360
Добавлен:
10.08.2019
Размер:
53.81 Mб
Скачать

10.6. Функции и массивы

Обобщенная формулировка задания. Написать функцию для вычисления массива значений первой производной функции f(x) в заданных точках xi оси аргумента на интервале [а,b]. Указатель на дифференцируемую функцию передается как значение параметра. Оценить и выбрать внутри функции величину шагов i, необходимых для оценки значений производной в точке xi (см. ниже приближенные формулы).

Прототип исследуемой функции (от которой берется производная):

double function(double x);

Возможны два варианта решения поставленной задачи.

1. Прототип функции для вычисления массива производных с произвольным (неравномерным) разбиением интервала [а, b]:

2. Прототип функции для вычисления массива производных с равномерным разбиением интервала [а, b]:

Приближенные формулы вычисления f(x0) - первой производной функции y=f(x) в точке х0 (рис. 10.1.):

Рис. 10.1. Иллюстрация к формулам оценки значений производной

Массив-результат со значениями первой производной следует формировать как динамический массив внутри функции derivatives( ). Функция должна возвращать его адрес, т.е. указатель на него типа double * (его адрес).

Массив-результат double d[ ] для значений шагов А, нужно определить в вызывающей функции.

Используя функцию derivatives( ), вычислить значение первой производной для функции f(x) из задания §10.2 в точках из интервала [а, b], заданного там же. Заполнить табл. 10.4.

Таблица 10.4

Аргумент хi

Значение функции f(x)

Первая производная

Шаг i

"аналитическое" значение

fa(x)

приближенное значение

fn(x)

х0

xm-1 = b

"Аналитическое" значение производной fa'(xi) для табл. 10.4 вычислить, предварительно выполнив дифференцирование по аргументу х функции f(x). Полученное аналитическое выражение для производной fa'(x) оформить в виде дополнительной функции с прототипом

Выбрать или разработать самостоятельно метод подбора шага i вдоль оси аргумента при вычислении производной fn'(x). Например, используйте последовательное уменьшение величины i, до достижения "машинной точности". Учтите, что это достижение (сходимость) не гарантируется, поэтому необходимо, по крайней мере, ограничить количество итераций либо ввести ограничение на величину i.

10.7. Работа со структурами

1. Выбрать предметную область для базы данных и предложить структуру для описания отдельных записей базы данных. Выбранная структура должна иметь не менее пяти полей (элементов) двух или более типов.

Пример. Структура "Государство"

Элементы (поля, компоненты) структуры:

• название страны;

• столица;

• государственный язык;

• численность населения;

• площадь территории.

2. Написать функцию для формирования одномерного массива структур, значения которых вводятся из стандартного входного потока (с клавиатуры). При вводе структур можно реализовать один из следующих механизмов:

• ввод заранее заданного количества структур;

• ввод до появления структуры с заданном признаком;

• диалог с пользователем о необходимости продолжать ввод.

3. Написать функцию для записи в файл массива структур.

4. Написать функцию чтения в массив структур из файла.

5. Написать функцию дополнения уже существующего массива структур новыми структурами.

6. Написать функцию поиска структуры с заданным значением выбранного элемента.

7. Написать функцию постраничного вывода на экран дисплея содержимого массива структур.

8. Написать функцию поиска структур (записей) с заданными признаками (например, выбор структур по заданному диапазону значений элемента).

9. Написать функцию упорядочения массива структур по заданному полю (элементу). Например, упорядочить государства по численности населения или в алфавитном порядке названий стран.

10. Написать функцию полного обновления файла, например, массив структур переписывается в файл после упорядочения. Продемонстрировать:

• сохранение данных в файле после завершения программы;

• разные упорядочения совокупности структур;

• поиск подходящих структур (по значению элемента, по диапазону значений элемента).