کتابخانه های math.h و algorithm

در ++C، برای انجام محاسبات ریاضی، از توابعی که در فايل کتابخانه ای math.h قرار دارند، استفاده می‌شود. از این توابع می‌توان برای گرد کردن اعداد، گرفتن جذر یا نتیجه توان یک عدد استفاده کرد. در جدول زیر لیست برخی از توابع پر کاربرد این کتابخانه آمده است :

متد توضیح
abs() قدر مطلق یک عدد را بر می‌گرداند.
ceil() کوچک‌ترین مقدار صحیحی که بزرگتر یا مساوی با عدد مورد نظر ما باشد را بر می‌گرداند.
cos() کوسینوس یک زاویه مشخص را بر می‌گرداند.
floor() بزرگ‌ترین مقدار صحیحی که کوچکتر یا مساوی با عدد مورد نظر ما باشد را بر می‌گرداند.
log10() لگاریتم یک عدد در مبنای 10 را بر می‌گرداند.
pow() برای به توان رساندن یک عدد به کار می‌رود.
round() گرد کردن یک عدد اعشار به نزدیکترین مقدار صحیح.
sin() سینوس یک زاویه مشخص را بر می‌گرداند.
sqrt() جذر یک عدد را بر می‌گرداند.
tan() تانژانت یک زاویه را بر می‌گرداند.

گرد کردن اعداد با استفاده از کلاس Math

می‌توان با استفاده از ceil() و floor() یک عدد با قسمت اعشار را گرد کرد. متد ceil() یک عدد از نوع double را گرفته و یک مقدار از نوع double گرد شده را بر می‌گرداند. نتیجه این متد بزرگتر یا مساوی آرگومان دریافت شده است. floor یک عدد double را گرد کرده و نتیجه کوچکتر یا مساوی آرگومان گرفته شده است. برای روشن شدن مطلب به مثال زیر توجه کنید :

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    double number = 34.567;

    cout << "Ceiling(34.567) = " << ceil(number)  << endl;
    cout << "Floor(34.567) = "   << floor(number) << endl;
}
Ceiling(34.567) = 35
Floor(34.567) = 34

اگر بخواهید یک عدد را گرد کنید، می‌توانید از متد round() استفاده کنید :

double number = 3.31674;

cout << "round(3.31674) = " << round(number);
3

به توان رساندن یک عدد با استفاده از کلاس Math

برای به توان رساندن یک عدد از متد pow() استفاده می‌شود. این متد دو آرگومان از نوع double قبول کرده که اولین آرگومان پایه و دومی توان می‌باشد. مقدار برگشتی از این متد double است. به کد زیر توجه کنید :

for (int i = 0; i < 10; i++)
{
     cout << "2^" << i << " = " << pow(2, i) << endl;
}
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512

گرفتن ریشه یک عدد

برای محاسبه ریشه یک عدد از متد sqrt() استفاده می‌شود. این متد یک عدد به عنوان آرگومان قبول می‌کند که همان عددی است که می‌خواهیم ریشه آن را محاسبه کنیم. مقدار برگشتی از این متد هم double می‌باشد.

cout << sqrt(25);
5

M_PI

کتابخانه math.h دارای ثابت هایی است که برای استفاده از آنها باید قبل از وارد کردن این کتابخانه، عبارت زیر را وارد نمایید :

#define _USE_MATH_DEFINES
#include <math.h>

یکی از این ثابت ها، M_PI بوده، که مقدار 3.14159265358979323846 را در خود ذخیره دارد و زمانی که بخواهید محیط یا مساحت یک دایره را پیدا کنید، می توانید از آن استفاده کنید. برای یافتن محیط یک دایره به صورت زیر عمل می‌شود که در آن radius شعاع می‌باشد :

double area;
area = M_PI * pow(radius, 2);

کتابخانه math.h دارای متدهای بیشتری است که ما به توضیح همین چند متد بسنده کردیم.

یافتن بزرگترین و کوچکترین عدد با استفاده از توابع کتابخانه algorithm

کتابخانه algorithm دارای متدهای min() و max() برای یافتن بزرگترین و کوچکترین عدد از بین چندین عدد می‌باشد. هر دو متد دو آرگومان از نوع عددی قبول می‌کنند. در حالت پیشفرض دو عدد را می‌توانید با هم مقایسه نمایید.

cout << min(1, 2) << endl;
cout << max(1, 2) << endl;
1
2

برای جلوگیری از محدودیت این متدها می‌توان به صورت تو در تو از آنها به صورت زیر استفاده کرد:

cout << min(min(1, 2), 3) << endl;
cout << max(max(1, 2), 3) << endl;
Max = 3
Min = 1

همچنین می‌توانید یک تابع تعریف کنید که کوچکترین و بزرگترین هر تعداد عدد را به شما معرفی کند :

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

int GetMax(int numbers[])
{
    int maximum = numbers[0];

    for (int i = 1; i <= sizeof(numbers); i++)
    {
        maximum = max(maximum, numbers[i]);
    }

    return maximum;
}

int GetMin(int numbers[])
{
    int minimum = numbers[0];

    for (int i = 1; i <= sizeof(numbers); i++)
    {
        minimum = min(minimum, numbers[i]);
    }

    return minimum;
}

int main()
{
    int numbers[] = { 32, 17, 45, 10, 5 };
    int max = GetMax(numbers);
    int min = GetMin(numbers);
    cout << max << endl;
    cout << min;
}
45
5

توابع GetMax() و GetMin() آرایه‌ای از اعداد صحیح قبول می‌کنند (هر تعداد عدد را قبول می‌کنند). در داخل توابع ما فرض را بر این گذاشته‌ایم که اولین مقدار بزرگترین و آخرین مقدار کوچکترین عدد است. سپس یک حلقه for ایجاد کرده که با اندیس 1 شروع می‌شود. با استفاده از متدهای min() و max() تعیین می‌کنیم که آیا عنصر جاری حلقه از مقدار جاری اعداد بزرگتر است یا کوچکتر. که در این صورت مقدار جاری را جایگزین متغیرهای بزرگ یا کوچک می‌کنیم. سپس مقادیر نتیجه را برگشت می‌دهیم.