Лекции по проге / 13_Комбинация функций, определяемых пользователем
.pdf
Последовательный вызов функций с зависимостью по данным
Такая комбинация функций возникает, когда одна функция подготавливает данные, а другая использует их как входные
вызывающая
функция
функция 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
