ریاضی رابیطهلر اوچون اوپراتور تاپیلماسا، ریاضی کیتابلیق فانکشنلری (Math Library functions) ایشلتمهلی اولاجاقسینیز.
بورادا بیز C پروقراملاما دیلی اوچون، ایکینجی جذر (sqrt) و ایکی قووّه (pow) ریاضی فانکشنلرینی آچیقلایاجاییق. sqrt فانکشنی، یعنی ایکینجی جذر (square root) فانکشنی اوچون، math.h باشلیق فایلی (header file) قوللانمالیسینیز.
بو میثالی نظرده آلین:
#include <stdio.h>
#include <math.h>
int main ()
{
float r,y;
printf ("put a number to calculate the square root: ");
scanf ("%f",&y);
r = sqrt (y);
printf ("\nsquare root of %f is: %f\n",y,r);
return (0);
}
ایلک سطر stdio.h چاغیرماق اوچون ایشلنیر.
ایکینجی سطر ایسه ریاضی فانکشنلرین باشلیق فایلینی چاغیریر.
۵-جی سطرده r و y تکین اعشاری موتغیرلر تعریف اولور.
سونرا ۷-جی سطرده y موتغیری اوچون scanf ایله میقدار آلینیر و ۸-جی سطرده جذر حساب اولور و r تکین بیر اعشاری عدد اونا ایختیصاص وئریلیر.
نهایتده ۹-جو سطردهکی printf فانکشنی ده نتیجهیی چاپ ائدیر.
ایندی ایکی-قووّهلی رابیطه اوچون بیر آیری اؤرنک.
آشاغیداکی میثالی نظرده آلین:
#include <stdio.h>
#include <math.h>
int main ()
{
float r,y,n;
printf ("put two numbers r&n to calculate the n-th power of r:\n
r = ");
scanf ("%f",&r);
printf ("n = ");
scanf ("%f",&n);
y = pow (r,n);
printf ("\n%f-th power of %f is: %f\n",n,r,y);
return (0);
}
pow فانکشنی pow(var1,var2) فورمت ایله یازیلیر و بو رابیطهده، var1 موتغیری، var2 قوهیه یئتیریر.
مثلا اوٚستدهکی کود'دا، y=pow(r,n) رابیطهسی، ائله قاباقجا تانیدیغینیز y=rn رابیطهسیدیر.
بوراداکی n موتغیر اوچون حتی بیردن ده آز میقدار وئرمک اولار. یعنی pow فانکشنی، sqrt یئرینه ده ایشلهیه بیلر.
آشاغیداکی میثالدا بیر موتغیر اوچون ۳-جو جذری حساب ائدهجهییک:
#include <stdio.h>
#include <math.h>
int main ()
{
float y,r;
printf ("number to calculate the third root is:");
scanf ("%f",&y);
r = pow (y,1.0/3);
printf ("\nthird root of %f is: %f\n",y,r);
return (0);
}
اوبیری تانینمیش ریاضی فانکشنی، rand (تصادفی میقدار) فانکشنیدیر. البته دوغرودان دا ریاضی فانکشنی دئییل.
rand فانکشنین ایشی، رندوما اوخشار عدد اوٚرتمکدیر (تولید ائتمک). بوراخدیغی عددی ده قاباقجادان حسابلانا بیلدیگینه گوٚره، دوغرودان دا رندوم دئییل و وورغولادیغیمیز تکین (تاکید ائتمک) سادهجه رندوم میقدارا اوخشویور.
یعنی حقیقتا ده قاباقجا نه عددی بوراخاجاغینی حسابلاماق اولار. آنجاق گئنه ده عموما رندوم ساییب و ایشلتمک اولار. rand فانکشنی چالیشماغا گؤره، stdlib.h باشلیق فایل اوچون احتیاج وار.
مثلا آشاغیداکی اؤرنگه باخین:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int r;
r = rand ();
printf ("%d is a random number",r);
return (0);
}
نئچه یول کامپایل و ایجرا ائدین! خروجیلرین هامیسی بیر زادی گؤستردیکلرینی گؤرهجکسینیز!
فانکشنین ده دوٚز چالیشماسی اوچون، رندوم عددلری اوٚرهتن (تولید ائدن) ماشینی یئنیدن بذرلندیرمک (seed randomizer) لازیمدیر و بو ایشی ده srand فانکشنی ایله یئرینه یئتیرهجهییک.
srand ده ائله rand فانکشنی تکین، stdlib.h ایله چالیشمالیدیر.
آشاغیداکی میثال ائله بونو آنلاتیر:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int r;
srand(31);
r = rand ();
printf ("%d is a random number",r);
return (0);
}
بیز بذرلندیرمک (seed randomizer) اوچون 31 یازدیق. البته ایستهسنیز آیری عدد ده یازا بیلرسینیز. آنجاق بذرلندیرمک اوچون یازدیغینیز عدد، صحیح (اینتیجر) و مثبت بیر عدد اولمالیدیر، یالنیز بونو اونوتمایین.
سیزجه گئنه ده ائله قاباقکی نتیجهیی گؤرهجکسینیزمی؟ یوخسا آیری عدد بوراخیشدا چاپ اولاجاق؟
srand فانکشنی اولان پروقرامین نتیجهسی، قاباقکی srand فانکشنی اولمویان ایله فرق ائدیر، آنجاق بو نوع پروقراملارین دا نتیجهلری بیر-بیرلری تکین اولور! داریخمایین، بوتون ایشلری دوٚز گؤرموشسونوز.
srand فانکشنینده اینپوت اوچون ایختیصاص وئردیگیمیز عدد (31) ثابیت یئرینده قالیبدیر، بونا گؤره ده نتیجه دگیشمهییبدیر.
نتیجهنین دگیشمهسی اوچون، بذرلندیرمک عددی دگیشمک لازیمدیر. بئلهلیکله رندوم عدد اؤرتمک (تولید) مقصدی ایله بذرلندیرمک اوچون نئچه یولوموز اولاجاقدیر.
بیرینجی یول، ائله قاباقکی پروقرام تکین ایشلهییجیدن (کاربر) بیر عدد ایستهمکدیر.
آنجاق پروقرامچیلارین داها یایغین و معمول قوللاندیغی یول، کامپیوترین ایچیندهکی ساعاتدان بذرلندیرمک اوچون اینتیجر عددی آلماقدیر و بونا گؤره ده زامان (time) دستورو ایستیفاده ائدهجهییک.
البته زامان فانکشنه گؤره گلنکی فصلده داها کامل صؤحبت ائدهجهییک و ایندیلیک بیر راحات اؤرنگه قناعت ائدیریک:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int r;
srand((unsigned)time(NULL));
r = rand ();
printf ("%d is a random number",r);
return (0);
}
یاخشی، ایندی کامپایل ائدین و نتیجهیه باخین.
Output Terminal
107110352 is a random number
Process returned 0 (0x0) execution time : 0.004 s
Press ENTER to continue.
پارانتز ایچیندهکی unsigned بیر آچارسوزو اولاراق، time(NULL) فانکشنین هانکی محدوده اوچون میقدار اختیصاص وئرمهسینی آیدینلادیر.
مثلا (char *)p یازیسی، p حرفین کاراکترسل ایشارهچی اولماسینی دئییر و یا (int)number ایسه بونو دئییر کی number یازدیغیمیز موتغییر، بیر صحیح عدد نظرده آلینیر.
بیر بیانیهنین ایچینده دیرک آچیقلامامیز اولاندا، مجبور اولاراق بئله آچیقلامالاری دا C پروقراملاما دیلینده ایشلتمک اولار.
بیلدیگینیز تکین همیشه int a =3; تکین جوملهلری یازماق اولمور، اؤزللیکله پارانتز ایچینده.
یاخشی.
یازدیغیمیز (unsigned)time(NULL) عیبارتین نه ائتمهسی، داواملی دگیشیکلی عددی srand فانکشنه وئرمکدیر.
آیدیندیر دا، زامان موداویم حالتده تغییر تاپیر و بو یول ایله srand فانکشنه متفاوت عدد وئرمک اولار. سیخینتی آرتیق چؤزولدو!
آشاغیداکی پروقرام، 0 و 100 آراسیندا رندوم عدد تاپیر.
بونون دا نئجه چالیشدیغیسینی سیزه بوراخیریق.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (){
int r;
srand((unsigned)time(NULL));
r = (rand ())/21474837;
printf ("%d is a random number",r);
return (0);
}
Output Terminal
99 is a random number
Process returned 0 (0x0) execution time : 0.007 s
Press ENTER to continue.