Математические функции в С++

В С++ определены в заголовочном файле <cmath> функции выполняющие некоторые часто используемые математические задачи. Например, нахождение корня, возведение в степень, sin()cos() и многие другие. В таблице 1 показаны основные математические функций, прототипы которых содержатся в заголовочном файле <cmath>.

Таблица 1 — Математические функции в С++
Функция Описание Пример
abs( a ) модуль или абсолютное значение от а abs(-3.0)= 3.0
abs(5.0)= 5.0
sqrt(a) корень квадратный из а, причём а не отрицательно sqrt(9.0)=3.0
pow(a, b) возведение  а в степень b pow(2,3)=8
ceil( a ) округление а до наименьшего целого, но не меньше чем а ceil(2.3)=3.0
ceil(-2.3)=-2.0
floor(a) округление а до наибольшего целого, но не больше чем а floor(12.4)=12
floor(-2.9)=-3
fmod(a, b) вычисление остатка от  a/b fmod(4.4, 7.5) = 4.4
fmod( 7.5, 4.4) = 3.1
exp(a) вычисление экспоненты еа exp(0)=1
sin(a) a задаётся в радианах
cos(a) a задаётся в радианах
log(a) натуральный логарифм a(основанием является экспонента) log(1.0)=0.0
log10(a) десятичный логарифм а Log10(10)=1
asin(a) арксинус a, где  -1.0 < а < 1.0 asin(1)=1.5708

Необходимо запомнить то, что операнды данных функций всегда должны быть вещественными, то есть  a и b числа с плавающей точкой. Это связано с тем, что существует несколько экземпляров перегруженных функций, соответствующих списку аргументов. Тему перегруженные функции рассмотрим немного позже, а пока надо запомнить, что a и b числа с плавающей точкой. Разработаем программу, которая будет использовать математические функции.

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

#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;

int main(int argc, char* argv[])
{   
    cout << "log10(10)     = " << log10(10.0)   << endl; // логарифм десятичный  
    cout << "log10(1)      = " << log10(1.0)    << endl;  
    cout << "log(2.718281) = " << log(2.718281) << endl; // натуральный логарифм(по основанию экспоненты) exp = 2.718281
    cout << "sqrt(9)       = " << sqrt(9.0)     << endl; // корень квадратный
    cout << "pow(2,3)      = " << pow(2.0,3.0)  << endl; // два в кубе 
    cout << "abs(0)        = " << abs(0.0)      << endl; // модуль от нуля
    cout << "abs(-5)       = " << abs(-5.0)     << endl; 
    cout << "ceil(3.14)    = " << ceil(3.14)    << endl; // округление 3.14 до наименьшего целого, но не меньше чем 3.14    
    cout << "ceil(-2.4)    = " << ceil(-2.4)    << endl; // округление -2.4 до наименьшего целого, но не меньше чем -2.4    
    cout << "floor(3.14)   = " << floor(3.14)   << endl; // округление 3.14 до наибольшего целого, но не больше чем 3.14   
    cout << "floor(-2.4)   = " << floor(-2.4)   << endl; // округление -2.4 до наибольшего целого, но не больше чем -2.4   
    cout << "fmod(2.4/2.0)   = " << fmod(2.4,2.0) << endl; // остаток от деления 2.4/2
    system("pause");
    return 0;
}

// код Code::Blocks

// код Dev-C++

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

#include <iostream>
#include <cmath>
using namespace std;

int main(int argc, char* argv[])
{
    cout << "log10(10)     = " << log10(10.0)   << endl; // логарифм десятичный
    cout << "log10(1)      = " << log10(1.0)    << endl;
    cout << "log(2.718281) = " << log(2.718281) << endl; // натуральный логарифм(по основанию экспоненты) exp = 2.718281
    cout << "sqrt(9)       = " << sqrt(9.0)     << endl; // корень квадратный
    cout << "pow(2,3)      = " << pow(2.0,3.0)  << endl; // два в кубе
    cout << "abs(0)        = " << abs(0.0)      << endl; // модуль от нуля
    cout << "abs(-5)       = " << abs(-5.0)     << endl;
    cout << "ceil(3.14)    = " << ceil(3.14)    << endl; // округление 3.14 до наименьшего целого, но не меньше чем 3.14
    cout << "ceil(-2.4)    = " << ceil(-2.4)    << endl; // округление -2.4 до наименьшего целого, но не меньше чем -2.4
    cout << "floor(3.14)   = " << floor(3.14)   << endl; // округление 3.14 до наибольшего целого, но не больше чем 3.14
    cout << "floor(-2.4)   = " << floor(-2.4)   << endl; // округление -2.4 до наибольшего целого, но не больше чем -2.4
    cout << "fmod(2.4/2.0)   = " << fmod(2.4,2.0) << endl; // остаток от деления 2.4/2
    return 0;
}

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

CppStudio.com
log10(10)     = 1
log10(1)      = 0
log(2.718281) = 1
sqrt(9)       = 3
pow(2,3)      = 8
abs(0)        = 0
abs(-5)       = 5
ceil(3.14)    = 4
ceil(-2.4)    = -2
floor(3.14)   = 3
floor(-2.4)   = -3
fmod(2.4/2.0)   = 0.4

Рисунок 1 — Математические функции в С++

Чтобы увидеть полный перечень функций в данном заголовочном файле, просто откройте его. Сделать это можно либо через поиск, либо через обозреватель решений, если программируете в MVS (см. Рисунок 2). В «Обозревателе решений» открываем вложенный каталог «Внешние зависимости«, в нём находим файл cmath. Открыв его, можно увидеть полный список математических функций.

Математические функции в С++

Рисунок 2 — Математические функции в С++

Открыть заголовочный файл можно, нажав правой кнопкой мыши по его имени, как показано на рисунке 3. В появившемся окне выбираем пункт Открыть документ <cmath>.

Математические функции в С++

Рисунок 3 — Математические функции в С++

Практика

К сожалению, для данной темы пока нет подходящих задач. Если у вас есть таковые на примете, отправте их по адресу: admin@cppstudio.com. Мы их опубликуем!

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

Комментарии

  1. CharlesNah

    CharlesNah

    Многие из нас мечтают о покупке роскошного спального гарнитура для своей Гармония и роскошь окутают ваш дом благодаря спальне Роза. СБОРКА в день доставки. АКЦИЯ ! ДОСТАВКА, ПОДЪЕМ гр. лифт — БЕСПЛАТНО

    [b]Перейти на сайт —>[/b] http://bigwork.info/

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

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