Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции по проге / 13_Комбинация функций, определяемых пользователем

.pdf
Скачиваний:
31
Добавлен:
14.03.2016
Размер:
185.32 Кб
Скачать

Последовательный вызов функций с зависимостью по данным

Такая комбинация функций возникает, когда одна функция подготавливает данные, а другая использует их как входные

вызывающая

функция

функция 1

данные

функция 2

 

 

11

Задание на комбинирование функций

Имеется одномерный массив целых чисел int mass[N]

Необходимо найти мин. значение троек, составленных из соседних эл-тов массива

Тест: mass = {2, 4, 4, 3, 2, 5} => 9

Нарисуйте дерево вызовов для указанной задачи, если известен перечень функций:

.........

12

Задание на комбинирование функций

.........

/*!

* Поиск минимума двух значений

*\param [in] a, b - анализируемые значения *\return - минимум двух значений

*/

int min(int a, int b);

/*!

* Суммирование элементов массива *\param [in] arr - массив

*\param [in] length - длина массива *\return – сумма всех элементов массива */

13 int sum(const int arr[], int length);

Последовательный вызов функций с зависимостью по данным

main

sum

сумма тройки

min

 

 

 

элементов

 

14

Задание на комбинирование функций

Реализуйте главную функцию программы:

найти минимальное значение троек, составленных из соседних элементов массива

15

Пример последовательного вызова функций с зависимостью по данным

int _tmain(int argc, _TCHAR* argv[])

{

const int N = 6;

int mass[N] = { 2, 4, 4, 3, 2, 5 }; // исх. массив int minTriplet; // мин. значение тройки эл-тов

minTriplet = sum( mass, 3 ); for(int i = 1; i < N-3; i++)

{

minTriplet = min( minTriplet, sum( mass+i, 3 ) );

}

printf("Min triplet = %d", minTriplet);

return 0;

16 }

Вызов одной функции из другой

Такая комбинация функций возникает, когда для реализации одной функции используется другая

Как следствие упрощается реализация и отладка вызывающей функции

функция 1 — она же вызывающая

функция 2

17

Задание на комбинирование функций

Имеется произвольная матрица целых чисел int matr[MAX_SIZE][MAX_SIZE]

Необходимо в ней найти минимальное значение

Нарисуйте дерево вызовов для указанной задачи, если известен перечень функций:

#define MAX_SIZE 100 // макс. размер матрицы

/*! * Поиск минимума двух значений

*\param [in] a, b - анализируемые значения *\return - минимум двух значений

*/

int min(int a, int b);

18 .........

Задание на комбинирование функций

/*! Поиск минимума в массиве

*\param [in] arr - анализируемый массив *\param [in] length - длина массива

*\return - минимальное значение элемента массива */

int minInArray(const int arr[], int length);

 

/*! Поиск минимума в матрице

 

*\param [in] matrix - анализируемая матрица

 

*\param [in] rowCount - кол-во строк матрицы

 

*\param [in] colCount - кол-во столбцов матрицы

 

*\return - минимальное значение элемента матрицы

 

*/

 

int minInMatrix(const int matrix[MAX_SIZE][MAX_SIZE],

19

int rowCount, int colCount);

 

Вызов одной функции из другой

main

minInMatrix

min

мин. значение

minInArray

 

 

 

в строке матрицы

 

 

 

min

20