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

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

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

«math style=¨font-family:Arial¨ xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mi»t«/mi»«mo»§#160;«/mo»«mo»=«/mo»«mo»§#160;«/mo»«mfenced open=¨{¨ close=¨¨»«mtable columnalign=¨left¨»«mtr»«mtd»«mo»(«/mo»«mi»min«/mi»«mo»§#160;«/mo»«msup»«mrow»«mo»(«/mo»«msub»«mi»a«/mi»«mn»0«/mn»«/msub»«mo»§#160;«/mo»«mo».«/mo»«mo».«/mo»«mo».«/mo»«mo»§#160;«/mo»«msub»«mi»a«/mi»«mrow»«mi»n«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mn»1«/mn»«/mrow»«/msub»«mo»)«/mo»«mo»)«/mo»«/mrow»«mn»2«/mn»«/msup»«mo»,«/mo»«mo»§#160;«/mo»«mo»§#160;«/mo»«mi»§#1082;§#1072;§#1083;§#1110;«/mi»«mo»§#160;«/mo»«mo»§#160;«/mo»«mrow»«mo»(«/mo»«mi»min«/mi»«mo»§#160;«/mo»«mrow»«mo»(«/mo»«msub»«mi»b«/mi»«mn»0«/mn»«/msub»«mo»§#160;«/mo»«mo».«/mo»«mo».«/mo»«mo».«/mo»«mo»§#160;«/mo»«msub»«mi»b«/mi»«mrow»«mi»m«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mn»1«/mn»«/mrow»«/msub»«mo»)«/mo»«/mrow»«mo»§#160;«/mo»«mo»§#60;«/mo»«mo»§#160;«/mo»«mo»-«/mo»«mn»10«/mn»«/mrow»«/mtd»«/mtr»«mtr»«mtd»«mo»(«/mo»«mi»max«/mi»«mo»§#160;«/mo»«msup»«mrow»«mo»(«/mo»«msub»«mi»a«/mi»«mn»0«/mn»«/msub»«mo»§#160;«/mo»«mo».«/mo»«mo».«/mo»«mo».«/mo»«mo»§#160;«/mo»«msub»«mi»a«/mi»«mrow»«mi»n«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mn»1«/mn»«/mrow»«/msub»«mo»)«/mo»«mo»)«/mo»«/mrow»«mn»2«/mn»«/msup»«mo»,«/mo»«mo»§#160;«/mo»«mo»§#160;«/mo»«mi»§#1082;§#1072;§#1083;§#1110;«/mi»«mo»§#160;«/mo»«mo»§#160;«/mo»«mrow»«mo»(«/mo»«mi»max«/mi»«mo»§#160;«/mo»«mrow»«mo»(«/mo»«msub»«mi»b«/mi»«mn»0«/mn»«/msub»«mo»§#160;«/mo»«mo».«/mo»«mo».«/mo»«mo».«/mo»«mo»§#160;«/mo»«msub»«mi»b«/mi»«mrow»«mi»m«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mn»1«/mn»«/mrow»«/msub»«mo»)«/mo»«/mrow»«mo»§#160;«/mo»«mo»§#62;«/mo»«mo»§#160;«/mo»«mn»10«/mn»«/mrow»«/mtd»«/mtr»«mtr»«mtd»«mo»(«/mo»«mi»max«/mi»«mo»§#160;«/mo»«mrow»«mo»(«/mo»«msub»«mi»a«/mi»«mn»0«/mn»«/msub»«mo»§#160;«/mo»«mo».«/mo»«mo».«/mo»«mo».«/mo»«mo»§#160;«/mo»«msub»«mi»a«/mi»«mrow»«mi»n«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mn»1«/mn»«/mrow»«/msub»«mo»)«/mo»«/mrow»«mo»§#160;«/mo»«mo»*«/mo»«mo»§#160;«/mo»«mi»min«/mi»«mo»§#160;«/mo»«mrow»«mo»(«/mo»«msub»«mi»a«/mi»«mn»0«/mn»«/msub»«mo»§#160;«/mo»«mo».«/mo»«mo».«/mo»«mo».«/mo»«mo»§#160;«/mo»«msub»«mi»a«/mi»«mrow»«mi»n«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mn»1«/mn»«/mrow»«/msub»«mo»)«/mo»«/mrow»«mo»§#160;«/mo»«mi mathvariant=¨normal¨»§#1091;«/mi»«mo»§#160;«/mo»«mi»§#1072;§#1089;§#1090;§#1072;§#1090;§#1085;§#1110;§#1093;«/mi»«mo»§#160;«/mo»«mi»§#1074;§#1099;§#1087;§#1072;§#1076;§#1082;§#1072;§#1093;«/mi»«/mtd»«/mtr»«/mtable»«/mfenced»«/math»

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

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