Kezdőoldal » Számítástechnika » Programozás » Hogy tudom megvizsgálni, hogy...

Hogy tudom megvizsgálni, hogy egy szám egész-e?

Figyelt kérdés

Pascallal dolgozom. A folyamat már megvan a fejemben, egyszerűen képtelen vagyok összerakni, mert már fáradt vagyok és szorít a határidő. :(

Úgy gondolom, hogy valamit a trunc(x) függvénnyel kell kezdeni, mellé meg jön majd egy feltétel, de nagyon zokni vagyok most ehhez, egy kis segítséget elviselnék :D

Köszi



2014. nov. 16. 22:52
1 2 3
 1/21 CspCsj ***** válasza:
100%

Így az egészrésszel, de a traunc is hasonló:


if trunc(szam)=szam

then

writeln("Egesz");

else

writeln("Tört");

2014. nov. 16. 23:22
Hasznos számodra ez a válasz?
 2/21 anonim ***** válasza:
0%
Round-dal, ne trunc-al: [link]
2014. nov. 16. 23:25
Hasznos számodra ez a válasz?
 3/21 anonim ***** válasza:
azthiszem hogy mod paranccsal+if-fel is lehet
2014. nov. 16. 23:44
Hasznos számodra ez a válasz?
 4/21 SimkoL ***** válasza:
100%

Legyen már inkább Frac :)

if Frac(szam) <> 0 then WriteLn('Tört') else...

2014. nov. 17. 11:06
Hasznos számodra ez a válasz?
 5/21 anonim ***** válasza:

Minden megoldás jó eddig. (Leszámítva a round-os gyereket)

Azonban ez a leggyorsabb módszer:


return n - (double)(int)n == 0.0;

2014. nov. 17. 11:37
Hasznos számodra ez a válasz?
 6/21 SimkoL ***** válasza:
Gyerekem, Pascal-ban kell ! Erre van a Frac függvény ami a törtrészt adja vissza.
2014. nov. 17. 12:15
Hasznos számodra ez a válasz?
 7/21 anonim ***** válasza:

> Erre van a Frac függvény ami a törtrészt adja vissza.


A Frac() borzasztó lassú. Ha nincs rá valós okod, nem jó használni.


> Pascal-ban kell!


Én kérek elnézést.


function isInteger(n : Double) : Double

begin

    return n - Double(Integer(n)) = 0.0;

end;

2014. nov. 17. 14:07
Hasznos számodra ez a válasz?
 8/21 anonim ***** válasza:

"Minden megoldás jó eddig. (Leszámítva a round-os gyereket)"


Én úgy látom , hogy egyedül a te megoldásod nem jó. (Amikor kiírtam akkor még nem láttam a legelső válaszát.)


Kicsit átírtam az egyik példát az oldalon amit linkeltem, hogy megmutassam több input számra:

[link]


"Én kérek elnézést.


function isInteger(n : Double) : Double

begin

return n - Double(Integer(n)) = 0.0;

end;"


Ha olyan okos gyerek vagy akkor tudhatnád, hogy pascalban nincs return. Továbbá Double értéket vár a függvényed és boolean értéket próbálsz átadni neki, ez nem gyenge típusos mint a C hogy elfogadja, ez erősen típusos nyelv, egyébként is ronda lenne. Továbbá Illegal type conversion-t ír rá a fordító alapból erre "Double(Integer(n))".


"A Frac() borzasztó lassú. Ha nincs rá valós okod, nem jó használni."

Trunc-al, frac-al, round-al is jó, én a round-ot javasoltam.

Kipróbáltam 1 millió trunc, frac és round hívást külön külön. A frac 40 milliszekundum körül futott le (több millisec ingadozás ugye van a multitaszk miatt)

Egy frac hívás a milliomod másodperc törtrészéig tart, ÚrIsten ez mekkora idővesztesség, az igaz, hogy a multitaszk az ennél többet vesz el, meg a képernyőre kiírás az eleve aránytalanul több idő. A trunc az 20 milisec körül volt (1 millió hívásra).

Láttam már itt olyan elmebeteget, aki ragaszkodott foggal körömmel ahhoz, hogy emberfeletti erővel optimalizáljunk, a NASA-t is lehordta mindennek mert nem így tesz, ha egy évig fut egy program akkor sem ha csak lehet egy órajel ciklussal se fusson hosszabb ideig a program, ha akár órákkal tovább tart csak e miatt a program megírása.

Mellesleg elárulom , hogy a round 10 milisec körül teljesített (1 millió meghívásra), egyben leggyorsabb a 3 közül.

2014. nov. 17. 16:05
Hasznos számodra ez a válasz?
 9/21 anonim ***** válasza:
0%

if (szam%1==0) then write("egész") else write("tört")

minek ide függvény?

2014. nov. 17. 18:15
Hasznos számodra ez a válasz?
 10/21 SimkoL ***** válasza:
Na, még egy zseni :(
2014. nov. 17. 20:12
Hasznos számodra ez a válasz?
1 2 3

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!