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

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

Прыклад 17.5. Дадзены натуральныя n, m цэлыя a0,..., an – 1b0,..., am – 1, атрымаць:

t space equals space open curly brackets table attributes columnalign left end attributes row cell left parenthesis min space left parenthesis a subscript 0 space... space a subscript n space minus 1 end subscript right parenthesis right parenthesis squared comma space space калі space space left parenthesis min space left parenthesis b subscript 0 space... space b subscript m space minus 1 end subscript right parenthesis space less than space minus 10 end cell row cell left parenthesis max space left parenthesis a subscript 0 space... space a subscript n space minus 1 end subscript right parenthesis right parenthesis squared comma space space калі space space left parenthesis max space left parenthesis b subscript 0 space... space b subscript m space minus 1 end subscript right parenthesis space greater than space 10 end cell row cell left parenthesis max space left parenthesis a subscript 0 space... space a subscript n space minus 1 end subscript right parenthesis space asterisk times space min space left parenthesis a subscript 0 space... space a subscript n space minus 1 end subscript right parenthesis space straight у space астатніх space выпадках end cell end table close

Этапы выканання задання

I.Зыходныя даныя: пераменныя n і m — колькасць элементаў у масівах  а і b, a і b — лінейныя масівы.

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. Тэсціраванне.