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

Лекции по проге / 12_Функции, определяемые пользователем

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

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

// Упорядочиваем элементы массива int mass[] = {22, 13, 9};

sort_1(mass, mass+1); sort_1(mass+1, mass+2); sort_1(mass, mass+1);

sort_2(mass); sort_2(mass+1); sort_1(mass);

41

Задание на реализацию функции

Реализовать функции sort_1() и sort_2()

42

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

/*!

*Упорядочить два значения по возрастанию

*\param [in|out] a - первое значение (меньшее)

*\param [in|out] b - второе значение (большее)

*/

void sort_1(int *a, int *b)

{

int buffer; // буфер для обмена двух значений

if(*a > *b)

{

buffer = *a; *a = *b;

*b = buffer;

}

43 }

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

/*!

*Упорядочить два значения по возрастанию

*\param [in|out] values — упорядочиваемые значения

*/

void sort_2(int values[2])

{

int buffer; // буфер для обмена двух значений

if(values[0] > values[1])

{

buffer = values[0]; values[0] = values[1]; values[1] = buffer;

}

}

44

Это не все...

Использование массивов в качестве входных, выходных и обновляемых аргументов

45

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

/*!

*Найти в массиве элементы равные заданному значению

*\param [in] mass - исходный массив

*\param [in] val - искомое значение

*\param [out] index_list - индексы найденных

*

элементов

*

\return кол-во найденных элементов

*/

int find_value_1( const int mass[100], int val, int index_list[100] );

46

Задание на вызов функции, использующей одномерные массивы в качестве входных и выходных аргументов

Дан массив, содержащий возраста студентов

int student_age[100];

Используя функцию find_value_1(), найти среди них тех, у кого возраст равен 18 лет, и распечатать их порядковые номера

47

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

//возраста студентов int student_age[100];

//восемнадцатилетние студенты (их индексы) int eighteen_students[100];

//кoл-во восемнадцатилетних студентов

int eighteen_count;

// Ищем восемнадцатилетних студентов eighteen_count = find_value_1 (student_age, 18,

eighteen_students);

// Печатаем их порядковые номера for(int i = 0; i < eighteen_count; i++)

{

printf("%d\n", eighteen_students[i]+1 );

48 }

Задание

Изменить функцию find_value_1() таким образом, чтобы снять ограничение на длину массивов — создать функцию find_value_2()

Определить входные и выходные данные функции

Выбрать способ реализации входных и выходных данных функции. Объявить прототип функции

49

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

Функция find_value_2()

Назначение функции: найти в массиве элементы равные заданному значению

Входные данные: массив mass целых чисел, длина length массива и искомое значение val

Выходные данные: индексы элементов массива, которые равны заданному значению — массив index_list; кол-во найденных элементов - длина массива index_list

50