§ 7. Паняцце дапаможнага алгарытму

7.5. Функцыі, якія не вяртаюць вынік

У мове Pascal выкарыстоўваюцца два віды дапаможных алгарытмаў: function і procedure. Функцыі, якія рэалізуюцца ў C++, з’яўляюцца аналагам  function у Pascal. Аналагом procedure у мове С++ будуць функцыі, ў якіх тып значэння, якое вяртаецца, апісваецца ключавым словам  void. Такія функцыі не вяртаюць якое-небудзь значэнне ў якасці выніку, таму ў  канцы гэтых функцый адсутнічае каманда  return.

Прыклад 7.13. Дадзены адрэзкі, даўжыні якіх роўныя a, b, c, d адпаведна. Для кожнай тройкі гэтых адрэзкаў, з якіх можна пабудаваць трохвугольнік, знайсці і вывесці плошчу гэтага трохвугольніка.

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

I.  Зыходныя даныя: даўжыні адрэзкаў: a, b, c, d.

II. Вынік: плошчы магчымых трохвугольнікаў.

III. Алгарытм рашэння задачы.

1. Увод зыходных даных. 
2. Для вызначэння, ці існуе трохвугольнік з даўжынямі старон  x, y, z, о апішам лагічную функцыю prov
3. Трохвугольнік існуе, калі сума даўжынь двух старон большая за трэцюю. 
4. Для кожнага з магчымых набораў  (a, b, c; a, b, d; a, c, d; b, c, d) праверым, ці існуе трохвугольнік, і калі функцыя prov верне true, то вылічым яго плошчу. 
5. Плошчу будзем вылічваць з дапамогай функцыі plos, апісанай у прыкладзе  7.6. 
6. Для вываду выніку апішам функцыю vyvod тыпу void.

IV. Апісанне пераменных: a, b, c, d — int.

Прыклад 7.13.

V. Праграма:

#include <iostream>

#include <cmath>

 

using namespace std;

 

double plos(double x, double y, double z)

{

  double pr = (+ y + z) / 2;

  double pl = sqrt(pr * (pr - x) * (pr - y) * (pr - z));

  return pl;

}

 

bool prov (double x, double y, double z)

{

  return (< y + z && y < x + z && z < x + y);

}

 

void vyvod (double x, double y, double z)

{

  cout << "storiny treugolnika: ";

  cout << x << " " << y << " " << z;

  cout << endl << "ploschad: ";

  cout << plos(x, y, z) << endl;

}

int main()

{

  double a, b, c, d;

  cout << "a, b, c, d" << endl;

  cin >> a >> b >> c >> d;

  if (prov(a, b, c))

    vyvod(a, b, c);

  if (prov(a, b, d))

    vyvod(a, b, d);

  if (prov(a, c, d))

    vyvod(a, c, d);

  if (prov(b, c, d))

    vyvod(b, c, d);

  return 0;

}

 VI. Тэсціраванне: