В языке 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 = (x + y + z) / 2;
double pl = sqrt(pr * (pr - x) * (pr - y) * (pr - z));
return pl;
}
bool prov (double x, double y, double z)
{
return (x < 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. Тестирование:

|