§ 17. Массивы и структуры как параметры функций

17.2. Массивы как параметры функций

Пример 17.5. Даны натуральные n, m целые a0,..., an – 1b0,..., am – 1, получить:

Error converting from MathML to accessible text.

Этапы выполнения задания

I. Исходные данные: переменные n и m — количество элементов в массивах а и b, a и b — линейныe массивы.

II. Результат: значение переменной t.

III. Алгоритм решения задачи.

1. Ввод исходных данных. Для ввода массива создадим функцию. Поскольку до вызова функции размер вектора неизвестен, то векторы a и b создаются без указания количества элементов в них. Для ввода значений можно использовать один из двух вариантов:

1.1. Ввести количество элементов, изменить размер вектора с помощью функции resize (см. Приложение к главе 1), затем ввести элементы.
1.2. Ввести количество элементов, в цикле по количеству элементов добавлять элементы в массив с помощью функции push_back.

2. Для нахождения минимального и максимального элементов массива оформим соответствующие функции. Функция будет принимать массив как параметр и возвращать значение минимального (максимального) элемента в массиве.
3. Вывод результата.

IV. Описание переменных: n, m, t – int, a, b – vector<int>.

Пример 17.5.

V. Программа:

#include <iostream>

#include <vector>

 

using namespace std;

 

void vvod (int &r, vector <int> &d)

{

  cout << "kol-vo el-tov =";

  cin >> r;

  d.resize(r);

  cout << "chisla" << endl;

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

    cin >> d[i];

}

 

int min_mas(vector <int> &d)

{

  int mn = 0;

  for (int i = 1; i < d.size(); i++)

    if (d[i] < d[mn])

      mn = i;

  return d[mn];

}

 

int max_mas(vector <int> &d)

{

  int mn = 0;

  for (int i = 1; i < d.size(); i++)

    if (d[i] > d[mn])

      mn = i;

  return d[mn];

}

 

int main()

{

  int t, m, n;

  vector <int> a, b;

  vvod (n, a);

  vvod (n, a);

  vvod (n, a);

  vvod (m, b);

  if (min_mas(b) < -10)

    t = min_mas(a) * min_mas(a);

  else

    if (max_mas(b) > 10)

      t = max_mas(a) * max_mas(a);

    else

      t = max_mas(a) * min_mas(a);

  cout << "t=" << t << endl;

  return 0;

}

 VI. Тестирование.