Vitendaji vya kawaida vya hisabati katika lugha C. Mafunzo ya Maingiliano ya Chatu

Operesheni +, -, * na ** zimefafanuliwa kwa nambari kamili. Mgawanyiko / operesheni ya nambari kamili inarudi nambari halisi(maana aina ya kuelea) Pia, chaguo za kukokotoa za upanuzi hurejesha thamani ya kuelea ikiwa kipeo ni nambari hasi.

Lakini pia kuna operesheni maalum mgawanyiko kamili, ambayo inafanywa kwa kukataa sehemu ya sehemu, ambayo inaonyeshwa na // (hii inalingana na operesheni ya div katika Pascal). Inarudisha nambari kamili: sehemu kamili ya mgawo. Operesheni nyingine inayohusiana ni operesheni ya kuchukua salio ya mgawanyiko, iliyoonyeshwa na% (inalingana na operesheni ya mod katika Pascal). Kwa mfano:

Chapisha(17 / 3) # kitachapisha 5.66666666667 chapa(17 // 3) # kitachapisha chapa 5(17 % 3) # kitachapisha 2

Baadhi ya vitendaji vilivyoorodheshwa(int , round , abs) ni za kawaida na hazihitaji moduli ya hesabu kutumika.

Kazi Maelezo
Kuzungusha
int(x) Huzungusha nambari kuelekea sifuri. Hii kazi ya kawaida, hauitaji kujumuisha moduli ya hesabu ili kuitumia.
duru(x) Huzungusha nambari hadi nambari kamili iliyo karibu zaidi. Kama sehemu nambari ni 0.5, kisha nambari inazungushwa hadi nambari iliyo karibu zaidi.
duru(x, n) Huzungusha nambari x hadi sehemu za desimali. Hiki ni kitendakazi cha kawaida; hauitaji kujumuisha moduli ya hesabu ili kuitumia.
sakafu(x) Huzungusha nambari chini (“sakafu”), na sakafu(1.5) == 1 , sakafu(-1.5) == -2
dari(x) Huzungusha nambari juu (“dari”), kwa dari(1.5) == 2 , dari(-1.5) == -1
abs(x) Moduli ( thamani kamili) Hiki ni kipengele cha kawaida.
Mizizi, logarithms
sqrt(x) Kipeo. Matumizi: sqrt(x)
logi(x) Logarithm ya asili. Inapoitwa log(x, b), hurejesha logarithm kwenye base b .
e Msingi wa logarithms asili ni e = 2.71828...
Trigonometry
dhambi(x) Sine ya pembe iliyobainishwa katika radiani
cos(x) Kosine ya pembe iliyobainishwa katika radiani
tan(x) Tanji ya pembe, iliyobainishwa katika radiani
sina(x) Arcsine, hurejesha thamani katika radiani
acos(x) Arc cosine, hurejesha thamani katika radiani
atani(x) Arctangent, hurejesha thamani katika radiani
atan2(y, x) Pembe ya polar (katika radiani) ya uhakika na viwianishi (x, y).
digrii(x) Hubadilisha pembe iliyobainishwa katika radiani hadi digrii.
radiani(x) Hubadilisha pembe iliyobainishwa katika digrii kuwa radiani.
pi Mara kwa mara π = 3.1415...

Tafadhali sitisha AdBlock kwenye tovuti hii.

Mahesabu ya hisabati sio tu kwa shughuli za hesabu. Mbali nao, unaweza pia kupata mizizi, moduli, logarithms, vipengele vya trigonometric, nk. Hebu tujifunze jinsi ya kutumia. kazi zinazofanana katika programu zao.

Ili kutumia vitendaji vya hisabati, unahitaji kujumuisha faili ya kichwa math.h . Inafafanua mengi kazi mbalimbali, lakini kwa sasa tutazingatia yafuatayo:

Baadhi kazi za hisabati

fabs(x) moduli ya nambari x
sqrt(x) mzizi wa mraba wa nambari x
sin(x) sine ya x (x katika radiani)
cos(x) kosini ya x (x katika radiani)
pow(x, y) hesabu x y
exp(x) hesabu e x
log(x) logariti asilia ya x
log10(x) logariti ya desimali ya x

Pointi mbili muhimu.

  • Chaguo zote za kukokotoa hurejesha thamani maradufu.
  • Vigezo vya kazi ni nambari halisi (mbili), lakini unaweza pia kupitisha nambari kamili. Hii itatokea ubadilishaji wa aina isiyo wazi. Mkusanyaji atafanya nambari halisi 3.0 kutoka kwa nambari kamili, kwa mfano 3.

Mifano.
Urefu wa miguu ya pembetatu ya kulia hutolewa. Kuhesabu urefu wa hypotenuse. Tatizo rahisi kujaribu ujuzi wako wa nadharia ya Pythagorean.

Orodha 1.

#pamoja na #pamoja na // unganisha math.h int main (batili) ( int a, b, c2; scanf("%d",&a); scanf("%d",&b); c2 = a*a + b*b; printf ("c = %.2f\n", sqrt(c2)); rudisha 0; )

Piga hesabu ya sine ya pembe iliyoingizwa kutoka kwa kibodi. Pembe imeingizwa kwa digrii.

Orodha 2.

#pamoja na #pamoja na // unganisha math.h int main (batili) ( alfa mbili, sin_a, pi = 3.1415926; scanf("%lf",&alpha); alpha = alpha*pi/180; sin_a = sin(alpha); printf("% .2f\n", sin_a); rudisha 0; )

Kuna mengi ya kuzungumza katika mpango huu. Kazi za Trigonometric, ambazo zimefafanuliwa katika math.h, hufanya kazi na kipimo cha pembe ya radian. Watu wamezoea zaidi kufanya kazi na digrii. Kwa hivyo, katika mpango huu tulibadilisha kwanza thamani kutoka digrii hadi radians. Ikiwa hii haijafanywa, matokeo yatakuwa sahihi. Angalia mwenyewe.

Ubadilishaji wa aina isiyo wazi

Wakati wa kubadilisha aina dhahiri, tulionyesha kwenye mabano kabla ya thamani aina ambayo thamani inapaswa kutupwa. Hakuna haja ya kufanya hivi katika uongofu kamili. Mkusanyaji atachagua kiotomati aina inayohitajika.

Ubadilishaji wa aina kamili unafanywa katika kesi zifuatazo:

  1. kabla ya kupitisha hoja kwa chaguo la kukokotoa (kama katika mfano wetu wa mizizi. Orodha 1.)
  2. kufanya shughuli za hesabu na aina tofauti hoja
  3. kabla ya kutekeleza jukumu

Sheria za ubadilishaji wa aina isiyo wazi

  • ikiwa imetimizwa shughuli za hesabu na aina tofauti za hoja. Hoja zote mbili zinatupwa kwa aina kubwa zaidi.
    Agizo la aina: int< float < double
  • inapopewa. Thamani iliyo upande wa kulia wa opereta mgawo inatupwa kwa aina ya kibadilishaji kilicho upande wa kushoto wa opereta mgawo. Wakati huo huo, ikiwa aina kubwa zaidi imepewa thamani ndogo, kupoteza kwa usahihi kunaweza kutokea.

int+float itabadilishwa kiotomatiki kuwa float+float
float/int itabadilishwa kiotomatiki kuwa kuelea/kuelea
double*float itabadilishwa kuwa double*double
int = double double itabadilishwa kuwa int na kupoteza sehemu ya sehemu
float = int int itabadilishwa kuwa kuelea

Kazi zote za hisabati hutekelezwa kama mbinu Darasa la hisabati, zile kuu zinawasilishwa kwenye jedwali 4.1

Jedwali 4.1 - Sehemu kuu na njia za darasa la Hisabati

Jina la mbinu

Maelezo

Maelezo

|x|, imeandikwa kama Abs(x)

arc cosine

Acos(double x), pembe imebainishwa katika radiani

arcsine

Arctangent

Arctangent

Atan2(double x, double y) - pembe ambayo tanjiti yake ni tokeo la kugawanya y kwa x

Kazi

BigMul(int x,int y)

Zungusha

Simu (mara mbili x)

Kosine ya hyperbolic

Mgawanyiko na salio

2,71828182845905

Muonyeshaji

Zungusha chini

Sakafu (mara mbili x)

Salio la mgawanyiko

IEEERmainder(double x, double y)

Logarithm ya asili

Logariti ya decimal

Upeo wa nambari 2

Muendelezo wa Jedwali 4.1

Jina la mbinu

Maelezo

Maelezo

Kiwango cha chini cha nambari 2

thamani ya PI

3,14159265358979

Ufafanuzi

Pow(x,y) - x kwa nguvu ya y

Kuzungusha

Mzunguko(3.1)=3 Mzunguko(3.8)=4

Alama ya nambari

Sini ya hyperbolic

Kipeo

Tanjenti ya hyperbolic

Mfano wa mpango wa kuhesabu mstari kwa kutumia fomula fulani

nafasi ya jina ConsoleApplicationl

( utupu tuli kuu ()

Console.WriteLine("Ingiza x");

buf=Console.ReadLine();

double x=Convert.ToDouble(buf);

Console.WriteLine("Ingiza alfa");

buf=Console.ReadLine();

mara mbili a=double.Changanua(buf);

double y=Math.Sqrt(Math.PI*x)-

Hisabati.Exp(0.2*Math.Sqrt(a))+

2*Hesabu.Tan(2*a)+

1.6e3*Math.Log10(Math.Pow(x,2));

Console.WriteLine(“Kwa x= (0) na alfa =(1)”, x,a);

Console.WriteLine("Matokeo =" +y); )))

Hotuba ya 5. Waendeshaji lugha C#

Muundo wa waendeshaji lugha C#, sintaksia na semantiki zao hurithiwa kutoka kwa lugha ya C++. Usemi wowote unaoishia na semicolon ni taarifa.

Taarifa ya kuzuia au kiwanja

Kwa kutumia braces curly Kauli kadhaa za lugha (huenda zikaunganishwa na matamko) zinaweza kuunganishwa katika muundo mmoja wa kisintaksia uitwao tamko la zuio au changamano:

mwendeshaji_1

mwendeshaji_N

Kwa kisintaksia, block huchukuliwa kama taarifa moja na inaweza kutumika popote katika ujenzi ambapo sintaksia inahitaji taarifa moja. Mwili wa kitanzi na matawi ya if taarifa kawaida huwakilishwa kama kizuizi.

Opereta tupu

Taarifa tupu ni "tupu" iliyokatishwa na nusukoloni. Inatumika wakati syntax inahitaji mwendeshaji, lakini maana haifanyi hivyo. Wakati mwingine ni muhimu kutibu taarifa zinazokosekana kama taarifa tupu iliyopo. Inakubalika kisintaksia kuingiza nusukoloni za ziada, ikizingatiwa kuwa taarifa tupu zinaingizwa. Kwa mfano, ujenzi ufuatao ni halali kisintaksia:

kwa (int j=1; j<5; j++) //оператор цикла

(;;;); // mwendeshaji tupu

Inaweza kuzingatiwa kama kuchelewesha kwa wakati, operesheni isiyo na kazi.

Kazi za hisabati za lugha ya C


Lugha za C na C++ hufafanua aina mbalimbali za kazi za hisabati. Mwanzoni, lugha zote mbili ziliunga mkono seti sawa ya kazi 22 za hisabati. Walakini, lugha ya C++ ilipokua, safu ya utendakazi iliyofafanuliwa ndani yake ilipanuliwa. Kisha, katika toleo la C99, ukubwa wa maktaba ya hisabati iliongezeka kwa kiasi kikubwa. Kama matokeo ya mabadiliko haya, maktaba za kazi za hesabu za lugha za C na C ++ zilianza kutofautiana sana kutoka kwa kila mmoja. Kwa hivyo, sura hii inaelezea kazi za hisabati za lugha C (pamoja na zile zilizoongezwa katika toleo la C99), na Sura ya 9 inazingatia kikamilifu kazi za lugha ya C++. Hata hivyo, kumbuka kwamba seti ya awali ya kazi za hisabati bado inaungwa mkono na matoleo yote ya C na C++.

Ili kutumia kazi zote za hisabati, programu lazima iwe na kichwa . Mbali na kutangaza kazi za hisabati, kichwa hiki kinafafanua macros moja au zaidi. Katika toleo la C89 kichwa Jumla ya HUGE_VAL pekee ndiyo imefafanuliwa, ambayo ni thamani mbili inayoashiria kufurika.

Macro zifuatazo zinafafanuliwa katika toleo la C99.

Toleo la C99 linafafanua macros zifuatazo (kama-kazi) zinazoainisha thamani.

Katika toleo la C99, macros ya kulinganisha yafuatayo yanafafanuliwa, hoja ambazo (a na b) lazima ziwe maadili ya hatua zinazoelea.

Macros hizi hushughulikia maadili ambayo sio nambari sawa bila kutupa tofauti za aina halisi.

Macro za EDOM na ERANGE pia hutumiwa na vitendaji vya hesabu. Macro hizi zimefafanuliwa kwenye kichwa .

Makosa katika matoleo C89 na C99 yanashughulikiwa kwa njia tofauti. Kwa hivyo, katika C89, ikiwa hoja ya utendakazi wa hesabu haianguki ndani ya kikoa ambacho imefafanuliwa, thamani fulani ya utekelezaji hurejeshwa na kigezo kamili cha jumla cha errno kimewekwa kuwa thamani ya EDOM. Katika C99, hitilafu ya ukiukaji wa kikoa pia husababisha thamani mahususi ya utekelezaji kurejeshwa. Hata hivyo, thamani ya math_errhandling inaweza kuonyesha ikiwa vitendo vingine vinafanywa. Ikiwa math_errhandling ina thamani MATH_ERRNO, kigezo kamili cha kimataifa kilichojengewa ndani kinawekwa kuwa thamani ya EDOM. Ikiwa math_errhandling ina thamani MATH_ERREXCEPT, ubaguzi halisi unatupwa.

Katika C89, ikiwa chaguo la kukokotoa litatoa tokeo ambalo ni kubwa sana kwa uwakilishi kushughulikia, kufurika hutokea. Katika hali hii, chaguo za kukokotoa hurejesha HUGE_VAL na errno imewekwa kwa thamani ERANGE ikionyesha hitilafu ya masafa. Wakati mtiririko wa chini unagunduliwa, chaguo za kukokotoa hurejesha sifuri na kuweka errno kuwa ERANGE. Katika C99, hitilafu ya ziada pia husababisha chaguo za kukokotoa kurudisha thamani. HUGE_VAL, na ikipoteza umuhimu - sifuri. Ikiwa math_errhandling ina thamani MATH_ERRNO, tofauti ya kimataifa errno imewekwa kwa thamani ERANGE inayoonyesha hitilafu ya masafa. Ikiwa math_errhandling ina thamani MATH_ERREXCEPT, ubaguzi halisi unatupwa.

Katika toleo la C89, hoja za utendakazi wa hisabati lazima ziwe thamani mbili na thamani zinazorejeshwa na chaguo za kukokotoa lazima ziwe thamani mbili. Katika toleo la C99, lahaja za kuelea na ndefu mbili za kazi hizi ziliongezwa, ambazo hutumia viambishi f na l, mtawaliwa. Kwa mfano, katika toleo la C89, kazi ya sin() inafafanuliwa kama ifuatavyo.

dhambi mbili (double arg);

Katika toleo la C99, ufafanuzi hapo juu wa sin() kazi inaungwa mkono na marekebisho mawili zaidi yanaongezwa - sinf() na sinl().

Kuelea sinf(kuelea arg); sinl ndefu mbili (mrefu mara mbili arg);

Shughuli zinazofanywa na kazi zote tatu ni sawa; data tu inayofanyiwa shughuli hizi hutofautiana. Kuongeza marekebisho ya f- na 1 kwa vipengele vya hisabati hukuwezesha kutumia toleo linalolingana vyema na data yako.

Kwa kuwa C99 imeongeza vipengele vingi vipya, inafaa kuorodhesha kando vipengele vinavyoauniwa na C89 (pia vinatumika katika C++).

acos asin atani atan2 dari
cos cosh exp vitambaa sakafu
fmod frexp ldexp logi log10
muundo povu dhambi sinh sqrt
tan tanh

Na jambo moja zaidi: pembe zote zimeainishwa kwenye radians.


Angalia pia


acos - Hurejesha thamani ya arc cosine
acosh - Hurejesha thamani ya kosine ya safu ya hyperbolic
asin - Hurejesha thamani ya arcsine
asinh - Hurejesha thamani ya arcsine ya hyperbolic
atan - Hurejesha thamani ya arctangent
atan2 - Hurejesha arctangent ya a/b
atanh - Hurejesha thamani ya arctangent ya hyperbolic
cbrt - Hurejesha thamani ya mchemraba
ceil - Hurejesha nambari kamili ndogo zaidi ambayo ni kubwa kuliko thamani ya hoja iliyotolewa
nakala - Hutoa hoja iliyotolewa ishara ambayo hoja iliyobainishwa inayo
cos - Hurejesha thamani ya cosine
cosh - Hurejesha thamani ya kosini piambano
erf - Hurejesha thamani ya chaguo za kukokotoa za hitilafu
erfc - Hurejesha thamani ya hitilafu ya hiari ya kukokotoa
exp - Hurejesha thamani ya kipeo
exp2 - Hurejesha nambari 2 iliyoinuliwa kwa nguvu uliyopewa
expm1 - Hurejesha thamani ya logarithm asili iliyopunguzwa kwa moja
vitambaa - Hurejesha thamani kamili
fdim - Hurejesha sufuri au tofauti ya hoja mbili ulizopewa
floor - Hurejesha nambari kamili ambayo ni chini ya au sawa na thamani ya hoja iliyotolewa
fma - Hurejesha thamani ya a*b+c hoja zilizotolewa
fmax - Hurejesha thamani kubwa zaidi ya mbili
fmin - Hurejesha ndogo kati ya thamani mbili
fmod - Hurejesha sehemu iliyobaki ya mgawanyiko
frexp - Hugawanya nambari fulani katika mantissa na kipeo chake
hypot - Hurejesha urefu wa hypotenuse kutokana na urefu wa miguu miwili
ilogb - Hutoa thamani ya kielelezo
ldxp - Hurejesha thamani ya usemi num*2^exp.

Ilisasishwa mwisho: 10/31/2015

Darasa la Hisabati limeundwa kutekeleza shughuli mbalimbali za hisabati katika maktaba ya darasa la .NET. Ni tuli, hivyo mbinu zake zote pia ni tuli.

Wacha tuangalie njia za darasa la Hisabati:

    Abs(thamani mara mbili) : Hurejesha thamani kamili ya hoja ya thamani

    Matokeo mawili = Math.Abs(-12.4); // 12.4

    Acos(thamani mara mbili) : Hurejesha arc cosine ya thamani. Kigezo cha thamani lazima kiwe na thamani kati ya -1 na 1

    Matokeo mawili = Math.Acos(1); // 0

    Asin(thamani mara mbili) : Hurejesha arc sine ya thamani. Kigezo cha thamani lazima kiwe na thamani kati ya -1 na 1

    Atan(thamani mara mbili) : hurejesha arctangent ya thamani

    BigMul(int x, int y) : hurejesha bidhaa x * y kama kitu kirefu

    Matokeo mawili = Math.BigMul(100, 9340); // 934000

    Ceiling(thamani mara mbili) : hurejesha nambari kamili ya sehemu inayoelea ndogo kabisa ambayo si chini ya thamani

    Matokeo mawili = Hisabati.Ceiling (2.34); // 3

    Cos(double d) : hurejesha cosine ya pembe d

    Cosh(double d) : hurejesha kosini ya pembe d

    DivRem(int a, int b, out int result) : inarudisha matokeo ya mgawanyiko a/b, na iliyobaki imewekwa kwenye parameta ya matokeo.

    Matokeo ya Int; int div = Math.DivRem(14, 5, matokeo ya nje); //matokeo = 4 // div = 2

    Exp(double d) : Hurejesha msingi wa logariti asili iliyoinuliwa kwa nguvu d

    Floor(decimal d) : hurejesha nambari kamili ambayo si kubwa kuliko d

    Matokeo mawili = Hisabati. Sakafu(2.56); // 2

    IEEERemainder(double a, double b) : hurejesha salio la iliyogawanywa na b

    Matokeo mawili = Math.IEEERemainder(26, 4); // 2 = 26-24

    Log(double d) : hurejesha logarithm asili ya d

    Log(double a, double newBase) : hurejesha logariti ya nambari kulingana na newBase

    Log10(double d) : Hurejesha logariti ya desimali ya d

    Max(double a, double b) : hurejesha idadi ya juu kati ya a na b

    Min(double a, double b) : hurejesha nambari ya chini kati ya a na b

    Pow(double a, double b) : hurejesha nambari iliyoinuliwa kwa nguvu ya b

    Mviringo(double d) : Hurejesha d iliyozungushwa hadi nambari kamili iliyo karibu zaidi

    Matokeo mawili1 = Math.Round (20.56); // 21 matokeo mawili2 = Math.Round (20.46); //20

    Mviringo(double a, round b) : Hurejesha nambari iliyoviringwa hadi nambari maalum ya nafasi ya desimali inayowakilishwa na b

    Matokeo mawili1 = Math.Round(20.567, 2); // 20.57 matokeo mara mbili2 = Math.Round (20.463, 1); //20.5

    Ishara(thamani mara mbili) : Hurejesha 1 ikiwa thamani ni chanya, na -1 ikiwa thamani ni hasi. Ikiwa thamani ni 0, basi inarejesha 0

    Matokeo ya Int1 = Hisabati.Ishara(15); // 1 int result2 = Math.Sign(-5); //-1

    Sin(thamani mara mbili) : hurejesha sine ya thamani ya pembe

    Sinh(thamani mara mbili) : hurejesha sine hyperbolic ya thamani ya pembe

    Sqrt(thamani mara mbili) : hurejesha mzizi wa mraba wa thamani

    Matokeo mawili1 = Math.Sqrt(16); // 4

    Tan(thamani mara mbili) : hurejesha tanjenti ya thamani ya pembe

    Tanh(thamani mara mbili) : hurejesha tanjenti piambano ya thamani ya pembe

    Truncate(thamani mara mbili) : hutupa sehemu ya thamani, na kurudisha thamani kamili pekee

    Matokeo mawili = Math.Truncate (16.89); // 16

Darasa la Hisabati pia linafafanua viambishi viwili: Math.E na Math.PI. Kwa mfano, hebu tuhesabu eneo la duara:

Console.WriteLine("Ingiza eneo la mduara"); radius mara mbili = Double.Parse(Console.ReadLine()); eneo mbili = Math.PI * Math.Pow (radius, 2); Console.WriteLine("Eneo la duara lenye radius (0) ni (1)", radius, eneo);

Toleo la Console:

Ingiza radius ya mduara 20 Eneo la duara na radius 20 ni 1256.63706143592