§ 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. Тестирование: