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