Аргументы функций по умолчанию

При обращении к функции, можно опускать некоторые её аргументы, но для этого необходимо при объявлении прототипа данной функции проинициализировать её параметры какими-то значениями, эти значения и будут использоваться в функции по умолчанию. Аргументы по умолчанию должны быть заданы в прототипе функции.  Если в функции несколько параметров, то параметры, которые опускаются должны находиться правее остальных. Таким образом, если опускается самый первый параметр функции, то все остальные параметры тоже должны быть опущены. Если опускается какой-то другой параметр, то все параметры, расположенные перед ним могут не опускаться, но после него они должны быть опущены. Разработаем программу, в которой объявим функцию с аргументами по умолчанию.

// function.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
#include <cmath> // описывает работу математической функции sqrt() - квадратный корень
using namespace std;

double heron_space(const double a = 5, const double b = 6.5, const double c = 10.7); //параметры функции инициализированы по умолчанию

int main(int argc, char* argv[])
{
    cout << "S = " << heron_space()     << endl << endl; // все параметры используются по умолчанию
    cout << "S = " << heron_space(10,5) << endl << endl; // только последний параметр используется по умолчанию
    cout << "S = " << heron_space(7)    << endl << endl; // два последних параметра берутся по умолчанию, а первый равен 7
    system("pause");
    return 0;
}

double heron_space(const double a, const double b, const double c) // функция вычисления площади треугольника по формуле Герона
{
    const double p = (a + b + c) / 2;   // полупериметр
    cout << "a = " << a << "\nb = " << b << "\nc = " << c << endl;
    return (sqrt(p * (p - a) * (p - b) * (p - c))); // формула Герона для нахождения площади треугольника
}

// код Code::Blocks

// код Dev-C++

// function.cpp: определяет точку входа для консольного приложения.

#include <iostream>
#include <cmath> // описывает работу математической функции sqrt() - квадратный корень
using namespace std;

double heron_space(const double a = 5, const double b = 6.5, const double c = 10.7); //параметры функции инициализированы по умолчанию

int main(int argc, char* argv[])
{
    cout << "S = " << heron_space()     << endl << endl; // все параметры используются по умолчанию
    cout << "S = " << heron_space(10,5) << endl << endl; // только последний параметр используется по умолчанию
    cout << "S = " << heron_space(7)    << endl << endl; // два последних параметра берутся по умолчанию, а первый равен 7
    return 0;
}

double heron_space(const double a, const double b, const double c) // функция вычисления площади треугольника по формуле Герона
{
    const double p = (a + b + c) / 2;   // полупериметр
    cout << "a = " << a << "\nb = " << b << "\nc = " << c << endl;
    return (sqrt(p * (p - a) * (p - b) * (p - c))); // формула Герона для нахождения площади треугольника
}


Параметры функции инициализированы по умолчанию в прототипе функции. Если при запуске функции не передавать ей значения, то по умолчанию будут использоваться аргументы 5, 6.5, 10.7. В строках 12, 13, 14 показаны различные способы использования функции heron_space() с аргументами по умолчанию. Данная функция heron_space вычисляет площадь треугольников по формуле Герона.Формула Герона позволяет вычислить площадь треугольника (S) по его сторонам a, b, c:


где р — полупериметр треугольника:

В строке 5 подключен стандартный заголовочный файл <cmath> для того, чтобы воспользоваться функцией вычисления корня квадратного sqrt() в строке 23. Результат работы программы показан на рисунке 5.

CppStudio.com
a = 5
b = 6.5
c = 10.7
S = 11.1618

a = 10
b = 5
c = 10.7
S = 24.8615

a = 7
b = 6.5
c = 10.7
S = 21.9956

Рисунок 5 — Функции в С++

Иногда при многократном использовании одной функции необходимо менять не все её параметры, в таком случае использование параметров по умолчанию очень удобно.

Автор: admin
Дата: 25.08.2012
Поделиться:

Комментарии

  1. LeeManG

    данный код и без <cmath> вполне работает
    #include "stdafx.h"
    #include "heron.h"
    #include <iostream>
    using namespace std;
    
    double heron_space(const double a, const double b, const double c)
    {
    	const double p = (a + b + c) / 2;   
    	cout << "a = " << a << "\nb = " << b << "\nc = " << c << endl;
    	return (sqrt(p * (p - a) * (p - b) * (p - c)));
    }
    • Богдан

      <iostream> если здесь пооткрывать то найдём подключения <cmath> , потому всё роботает, но админ стати хотел показать что нужно подключить чтоб работали математические функции

      • Богдан

        извиняюсь за некоторые грамматические ошибки

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.