کتابخانه های 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() تعیین میکنیم که آیا عنصر جاری حلقه از مقدار جاری اعداد بزرگتر است یا کوچکتر. که در این صورت مقدار جاری را جایگزین متغیرهای بزرگ یا کوچک میکنیم. سپس مقادیر نتیجه را برگشت میدهیم.
سلام وقتی متغیری رو تعریف کردم که عددی رو واسم تو قدرمطلق قرار بده
پیام ‘abc’ was not declared in this scope|
در شریطی که اول برنامه کتابخانه رو تعریف کردم
سلام، abc نیست و abs ه
چجوری بدون استفاده از توابع و کتابخانه ها در سی++ جذر بگیریم؟
سلام چطوری میشه عدد پی رو در کدنویسی C وارد کرد؟
سلام، مطلب رو یه بار بخونید
سلام ببخشید محاسبه sin و cos بعضی جاها اشتباه میکنه درجه روهم به رادیان تبدیل میکنم از round or floor هم استفاده میکنم بازم بعضی جاها اشتباه میکنه خودم تونستم حلش کنم اما خیلی زیاد شد میخاستم ببینم توی چنتا خط ساده و کوتاه هم میشه محاسبش کرد ؟
مرسی همون کتابخانه اش رو اضافه نکرده بودم چطوری یادم رفت نمیدونم
سلام من از cod blocks استفاده میکنم و برای استفاده از جذر این خطا رو میده error: ‘sqrt’ was not declared in this scope|
توی این دستور cout<<sqrt (a+b)<<endl; دوتا متغیرم قبلا تعریف کردم
سلام،
کد زیر رو تو قسمت سرآیندها نوشتین؟
کدتون رو کامل بذارین بررسی کنم
متشکرم.
خیلی به دردم خورد.
سلام
آیا امکانش هس چند برنامه با هم ترکیب بشه؟ مثلا برنامه ماشین حسابی که ماتریس هم محاسبه کنه!
سلام، بله با کدنویسی امکانپذیره. ولی باید به کدنویسی مسلط باشین
ببخشید میشه سمپل کد برای سینوس و کسینوس اش هم بزارید
لینک زیر هم همش مثاله
https://www.programiz.com/cpp-programming/library-function/cmath/cos
سلام
ایا توابع معکوس مثلثاتی هم میتوانیم استفاده کنیم در این زبان برنامه نویسی؟
سلام، بله… گوشه پایین و سمت چپ لینک زیر رو ببینید
http://www.cplusplus.com/reference/cmath/atan