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

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

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

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

Реализуйте функцию minInMatrix

 

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

 

/*!

 

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

 

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

 

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

 

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

 

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

 

*/

 

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

21

int rowCount, int colCount);

 

Пример вызова одной функции из другой

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

int minInMatrix(const int matrix[MAX_SIZE][MAX_SIZE], int rowCount, int colCount)

{

int minValue; // искомое значение

minValue = matrix[0][0];

for( int i = 0; i < rowCount; i++ )

{

minValue = min( minValue, minInArray(matrix[i], colCount)

);

}

return minValue;

22 }

Пример вызова одной функции из другой

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

 

 

{

 

 

// Анализируемый массив

 

 

int matr[MAX_SIZE][MAX_SIZE] = { {3,

9,

0},

{-4,

8,

9},

{0,

3,

7} };

printf("Min value = %d", minInMatrix(matr, 3, 5) ); return 0;

}

23

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

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

вызывающая

функция

функция 1

функция 2

24

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

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

Необходимо удалить из него все простые числа и распечатать его содержимое до и после удаления элементов

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

.........

25

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

.........

/*!

* Сдвигает массив на заданное смещение (вправо или влево) *\param [in|out] arr - рабочий массив

*\param [in] length - длина массива *\param [in] shift - смещение:

> 0 - смещение вправо < 0 - смещение влево

*/

void shiftArray(int *arr, int length, int shift);

.........

26

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

.........

/*!

* Печатает массив *\param [in] arr - массив

*\param [in] length - длина массива */

void printArray(const int arr[], int length);

/*!

* Определяет, является ли число простым *\param [in] number — анализируемое число *\return – true, если число простое

*/

int isSimpleNumber(int number);

27

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

main

isSimpleNumber

shiftArray

массив

printArray

 

 

 

28

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

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

удалить из массива все простые числа и распечатать его содержимое до и после удаления элементов

29

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

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

 

{

 

 

int N = 6;

// кол-во элементов массива

int mass[] = { 2, 4, 4, 3, 2, 5 };

// исх. массив

int i;

// индекс элемента массива

// Печатаем исходный массив printf("Start array: \t"); printArray( mass, N );

.........

30