, : arrays1, : Top


9 Массивы (часть 2)

Передача массива в качестве параметра

Массивы можно передавать функции в качестве параметра. Но при этом размер создаваемого массива может быть неопределен на момент компиляции программы, поэтому функция не может знать размер полученного массива. Поэтому при объявлении функции необходимо задавать два параметра: массив передаваемых элемента (без указания размера массива) и размер массива. Например, функция поиска наименьшего значения в массиве int A[n] может быть объявлена так:

     double Min (int A[], int n)

Соответственно, внутри функции main мы объявляем массив int A[n] и вызываем функцию Min, передав в качестве параметров массив A и его размер n:

     Min (A, n);

Упражнения

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

  1. (A) Напишите функцию int Search (int A[], int n, int x), которая находит в массиве int A[n] элемент, значение которого равно x. Функция возвращает индекс найденного элемента или -1, если такого элемента в массиве нет. Программа получает на вход количество элементов в массиве n, затем n целых чисел – элементы массива, затем число x и должна вывести индекс найденного элемента или число -1, если данный элемент в массиве отсутствует.
  2. (B) Напишите функцию int CountMax (int A[], int n), которая подсчитывает, сколько раз в массиве встречается значение, являющееся максимальным. Функция должна выполнять однократный просмотр массива. Программа получает на вход количество элементов в массиве n, затем n целых чисел – элементы массива и должна вывести единственное целое число – сколько раз в массиве встречается значение, равное максимальному.
  3. (C) Дан массив, состоящий из различных целых чисел. Определите второй по величине элемент этого массива. Напишите для этого функцию int SecondMax (int A[], int n). Функция должна выполнять однократный просмотр массива.
  4. (D) Напишите функцию int SecondMax (int A[], int n), которая находит второй по величине элемент в массиве – тот элемент, который будет наибольшим, если из массива удалить наибольший элемент, то есть для массивов {1, 2, 3, 4} и {1, 2, 3, 3} вторым по величине элементом будет 3. Функция должна выполнять однократный просмотр массива.
  5. (E) Напишите функцию int SecondMaxValue (int A[], int n), которая находит второе по величине значение в массиве – значение элемента, который будет наибольшим, если из массива удалить наибольший элемент и все ему равные, то есть для массива {1, 4, 3, 4} вторым по величине значением будет 3.
  6. (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
    
  7. (G) Дан массив, заполненный целыми числами от 1 до 9. Определите, сколько раз встречается в нем значение 1, 2, ..., 9. Программа должна вывести ровно 9 чисел: количество единиц, двоек, ..., девяток в данном массиве.

    Например, для ввода

              10
              1 2 3 4 5 1 1 1 2 2
    

    программа должна вывести

              4 3 1 1 1 0 0 0 0
    
  8. (H) Дана последовательность чисел, состоящая только из чисел 1, ..., 9. Последовательность завершается числом 0. Подсчитайте, сколько раз в этой последовательности встречаются значения 1, 2, ..., 9. Программа должна вывести ровно 9 чисел: количество единиц, двоек, ..., девяток в данной последовательности. Последовательность может быть настолько большой, что сохранить ее всю в массиве невозможно.

    Например, для ввода

              1 2 3 4 5 1 1 1 2 2 0
    

    программа должна вывести

              4 3 1 1 1 0 0 0 0
    
  9. (I) Сортировка

    Дан массив целых чисел. Переставьте его элементы так, чтобы они шли в порядке неубывания. Выведите получившийся массив на экран.

    Например, для ввода

              5
              1 3 5 2 1
    

    программа должна вывести

              1 1 2 3 5