Kezdőoldal » Számítástechnika » Programozás » C-ben n. gyök vonás?

C-ben n. gyök vonás?

Figyelt kérdés
Jobb híján a pow függvénnyel csináltam, de ez valamiért nem képes elfogadni a törteket. 3. gyököt csak úgy tudok vonni, hogy egyik paraméternek a 0.333-at adok 1/3-as helyett. Igazából így is jól működik, de nagyon idegesít...
2014. ápr. 3. 20:02
 1/4 Tengor ***** válasza:
100%

A programnyelvek nem igazán kezeli a hagyományos törteket, inkább csak a tizedes törteket.

Ha pow(1/3)-at adsz meg neki, azt kiszámolja: 1/3 = 0, mert egészekkel számolunk. pow(1.0/3) így add meg neki és akkor ki fogja számolni.

2014. ápr. 3. 20:04
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:
Köszönöm a segítséget!
2014. ápr. 3. 22:53
 3/4 anonim ***** válasza:
75%

"A programnyelvek nem igazán kezeli a hagyományos törteket, inkább csak a tizedes törteket. "


Szerintem te a közönséges törtekre gondolsz. (Vagyis a racionális számok halmazára). Való igaz, hogy nem kezel semmilyen programnyelv tetszőleges közönséges törtet, viszont annak, hogy milyen kezel, annak csak a memória szab határt Turing-teljes nyelvek esetén. (Végtelen Turing gép képes kezelni a teljes racionális számhalmazt).


Persze, a C-ben például nincs közönséges törtet ábrázoló típus, de ilyet viszonylag egyszerűen lehet írni, vagy beszerezni máshonnan. Ha csak egy adott műveletet kell kezelnie, akkor egy struct is megteszi.


Megjegyzem, a tizedes törtek is közönséges törtek (racionális számok), csupán egy más felírási alakról van szó. Tizedes tört alakban irracionális számnak (tehát olyan számnak, ami nem közönséges tört) csak a megközelítését lehet felírni. Ugyanezt a hagyományos a törve b alakban is meg lehet tenni. Tehát, a tizedes törtek csupán a közönséges törtek egy részhalmazának leírására alkotott írásmódot jelentik. Sőt, az 1/3-ot tizedes tört alakban például az ismétlődés szabályszerűségének egyértelmű leírásával ki lehet fejezni. Pl. így: 0.33..3


Amivel szerintem te kevered, az a lebegőpontos tört fogalma. A kettő nem ugyanazt jelenti, távolról sem. A lebegőpontos számok inkább hasonlíthatóak a középiskolában tanult normálalakhoz. De ennél árnyaltabb a dolog. A lényeg, hogy a lebegőpontos számok halmaza egy sokkal szűkebb, az adott szabványnak megfelelő elemeket tartalmazó, általában véges halmaza, míg tizedes törtekkel végtelen számot lehet leírni. A részletekről ajánlom Járai Antal - Bevezetés a matematikába című könyvét. Annak van egy informatikai alkalmazásokkal bővített változata, ahol ez részletesen le van írva.


És itt jutottunk el a kérdező által vétett hibához: a C programozási nyelvben az 1/3 egy egészosztást jelent, mivel 1 és 3 egész számok. A C szabvány szerint tehát ennek az eredménye egy maradékos egész szám. A maradék a % operátorral használható. Az 1/3 eredménye nulla, maradt a 3, ezért nem működött a program.


Lebegőpontos osztást így lehet csinálni C-ben: 1.0/3.0


Ennek az eredménye már megközelítőleg 0.3333 lesz, így működni fog a program.

2014. ápr. 4. 00:17
Hasznos számodra ez a válasz?
 4/4 Tengor ***** válasza:
#3, köszi a pontosítást, bevallom nem néztem utána a pontos fogalomnak és régen volt már ez már az iskolapadban :$
2014. ápr. 4. 07:27
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!