Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet egy tetszőlegesen...

Hogyan lehet egy tetszőlegesen hosszú szám négyzetét kiszámolni?

Figyelt kérdés

Az összeadással és kivonással nem akadt nehézségem, a számokat stringként tárolva, majd számjegyenként, az általános iskolás írásbeli összeadás/kivonás algoritmusát felhasználva nem volt nehéz megvalósítani.

Viszont a négyzetre emelés (és a szorzás) az írásbeli szorzást leutánozva elég bonyolultnak tűnik. Nincs valami algoritmus egy szám négyzetének meghatározására?


2016. okt. 27. 10:05
1 2
 11/17 SimkoL ***** válasza:
@coopper: Hát a tizedessel nagyon nagy kört futottál
2016. okt. 28. 20:23
Hasznos számodra ez a válasz?
 12/17 coopper ***** válasza:

@SimkoL : Irtam én egyszerű ember vagyok, nekem ennyire futotta. Ha Te tudsz egyszerűbb vagy jobb megoldást, akkor oszd meg, én is és más is had tanuljon belőle.


Üdv.

2016. okt. 28. 21:03
Hasznos számodra ez a válasz?
 13/17 A kérdező kommentje:
Köszönöm az ötleteket, így már menni fog! :)
2016. okt. 30. 11:30
 14/17 SimkoL ***** válasza:

Picit átírtam cooper kódját, ha már 'beszóltam':

A SzovegNullazas funkció helyett a Delphi / Pascal StringOfChar függvénye került, tizedesjegy elválasztó StringReplace függvénnyel került kicserélésre, a tizedes jegyek meghatározása függvényt kapott. Talán a legfontosabb rész benne a szám ellenőrzése függvény. A SetLength és az Insert is szerepet kapott a Copy-k helyett.

[link]


De, hogy hasonlítson is nyúltam a SyntaxHighlighter-t - bocsi cooper :)

2016. okt. 30. 21:58
Hasznos számodra ez a válasz?
 15/17 coopper ***** válasza:

@SimkoL-nak


A SyntaxHighlighter én is googlétől nyúltam, úgy hogy ez nem gond.


Viszont mos én "szólok be":


A "tizedesPos" fügvényed nem sikerült valami optimálisra, akkor inkább már az én pozicionálós és összehasonlítós kódomat kellet volna függvénybe rakni. Mivel Te ciklusba raktad az IF-eket (egy if helyett, a beadott szám formátumának függvényében több if kerül végrehajtásra).


A többivel nagyjából egyetértek, de már egyszer irtam, az a bajom, hogy nem néztem utána a beépített függvényeknek, a string "Insert" és "Delete" függvényeit feleslegesnek tartom (és ezért ezeken nem is szoktam használni), mivel mindkettő kiváltható a string "copy" függvényével.


Azt pediglen már a múltkor letisztáztuk, hogy a Stringreplace egy általánosan megírt függvény - ami kezeli a különféle kódolásokat is - de ebben az esetben szerintem optimálisabb egy-két copy mint a Stringreplace függvény.


Bár természetesen én elismerem, hogy mindenki úgy kódol ahogy tud, én így Te úgy.


Csak az én véleményem az, hogy nem mindig kell "feláldozni" a kódot a "szépség" oltárán, és ez a stringreplacés dolog nekem erősen a szépség felé hajlik.


Üdv.

2016. okt. 31. 11:39
Hasznos számodra ez a válasz?
 16/17 Gyula__ válasza:

Rekurzízv algoritmus egy példán bemutatva


5442**2=5000**2+2*5000*442+442**2

442**2=400**2+2*400*42+42**2

42**2=40**2+2*40*2+2**2

2022. jan. 9. 16:16
Hasznos számodra ez a válasz?
 17/17 anonim ***** válasza:
#16 Naigen, csak tegyél hozzá a számhoz még harminc darab számjegyet, és utána próbáld elvégezni a műveletet. A szorzásra magára kell egy okos algoritmus, amely tetszőleges számjegy esetében is gyorsan és hatékonyan számol. Fentebb (megjegyzem, több mint 5 évvel ezelőtt) már elég sok megoldás született erre.
2022. jan. 9. 18:44
Hasznos számodra ez a válasz?
1 2

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!