Теоретический материал (С++)
Массивы (часть 2)
Передача массива в качестве параметра
Массивы можно передавать функции в качестве параметра. Но при этом
размер создаваемого массива может быть неопределен на момент компиляции
программы, поэтому функция не может знать размер полученного массива. Поэтому
при объявлении функции необходимо задавать два параметра: массив передаваемых
элемента (без указания размера массива) и размер массива. Например, функция
поиска наименьшего значения в массиве double A[n]
может быть объявлена так:
double Min (double A[], int n)
Соответственно, внутри функции main
мы объявляем массив double A[n]
и вызываем
функцию Min
, передав в качестве параметров массив A
и его размер n
:
Min (A, n);
Упражнения
Все решения задач необходимо оформлять в виде соответствующих функций.
Также программа должна содержать функцию main
, создающую и считывающую
массив и выводящую информацию о результате работы функции.
- (A) Напишите функцию
int Search (double A[], int n, double x)
, которая находит в массивеdouble A[n]
элемент, значение которого равноx
. Функция возвращает индекс найденного элемента или -1, если такого элемента в массиве нет. Программа получает на вход количество элементов в массиве n, затем n целых чисел – элементы массива, затем число x и должна вывести индекс найденного элемента или число -1, если данный элемент в массиве отсутствует. - (B) Напишите функцию
int CountMax (double A[], int n)
, которая подсчитывает, сколько раз в массиве встречается значение, являющееся максимальным. Функция должна выполнять однократный просмотр массива. Программа получает на вход количество элементов в массиве n, затем n целых чисел – элементы массива и должна вывести единственное целое число – сколько раз в массиве встречается значение, равное максимальному. - (C) Дан массив, состоящий из различных целых чисел. Определите второй по величине элемент
этого массива. Напишите для этого функцию
double SecondMax (double A[], int n)
. Функция должна выполнять однократный просмотр массива. - (D) Напишите функцию
double SecondMax (double A[], int n)
, которая находит второй по величине элемент в массиве – тот элемент, который будет наибольшим, если из массива удалить наибольший элемент, то есть для массивов{1, 2, 3, 4}
и{1, 2, 3, 3}
вторым по величине элементом будет 3. Функция должна выполнять однократный просмотр массива. - (E) Напишите функцию
double SecondMaxValue (double A[], int n)
, которая находит второе по величине значение в массиве – значение элемента, который будет наибольшим, если из массива удалить наибольший элемент и все ему равные, то есть для массива{1, 4, 3, 4}
вторым по величине значением будет 3. - (F) Даны два отсортированных массива:
int A[n]
иint B[m]
.Объедините их в один отсортированный массив
int C[n+m]
, то есть еслиA={1, 4, 6, 7}
,B={2, 3, 5}
, тоC={1, 2, 3, 4, 5, 6, 7}
. Оформите алгоритм в виде функцииvoid merge (int A[], int n, int B[], int m, int C[])
. Время работы алгоритма должно быть порядка n+m действий.Формат входных данных: число n, затем n возрастающих чисел – элементы первого массива, число m, затем m возрастающих чисел – элементы второго массива. Программа должна вывести n+m чисел, полученных объединением двух массивов в порядке возрастания.
Пример:
Вход
3
1 5 7
4
2 4 4 5
Выход
1 2 4 4 5 5 7