Kezdőoldal » Számítástechnika » Programozás » C-vel kapcsoltban miért...

C-vel kapcsoltban miért történik ez?

Figyelt kérdés

Egy szimulációt írok, amelynek során nagy mennyiségű adattal dolgozok. Van egy for ciklusom, amelyet 0-tól 2 milliárdig futtatva teljesen korrekt és várható eredményeket kapok, de 3 milliárdnál már gondok vannak. Először azt hittem, hogy elszámoltam magam és 9 óra alatt még nem volt ideje kiszámolni a dolgokat a gépnek, de aztán tetem bele egy tájékoztató funkciót, amely szerint a ciklus 71%-nál megáll egy hosszabb időre, majd visszaugrik 1%-ra és ez így megy a végtelenségig. Kipróbáltam 2.5 milliárdig a ciklust, ebben az esetben ez az érték 85%-ra adódott.

3 milliárd 71%-a 2 130 000 000, amíg 2.5 milliárd 85%-a 2 125 000 000, tehát az eltérés 5 000 000. A számok nagyságát tekintve ez igen kicsiny, szóval nekem ebből az következik, hogy a ciklus megközelítőleg a 2.12*10^9-es tartományban gőzöl be. Tudja valaki, hogy miért van ez így és hogy oldható ez meg? Egyszerűen nem értem, hogy ha jó 2.0 milliárdra, akkor miért nem jó 2.2 milliárdra...

Bár már találkoztam a C-nek különböző szépségeivel, sajnos még távolról sem értek hozzá olyan szinten, mint szeretnék.


Egyébként ennek lehet köze ahhoz, hogy milyen fordítót használok? Esetleg javasolhatnátok egyet-kettőt, igazán megköszönném. Jelenleg Pelles-t használok.


2014. jún. 29. 23:04
1 2
 11/15 iostream ***** válasza:
Végtelen sosem lesz, mert előbb-utóbb azt mondja, hogy std::bad_alloc. Valószínűleg erre utalt a válaszoló.
2014. jún. 30. 14:35
Hasznos számodra ez a válasz?
 12/15 anonim ***** válasza:
Maradjunk abban, hogy memory-limited int :)
2014. jún. 30. 20:00
Hasznos számodra ez a válasz?
 13/15 anonim ***** válasza:

Értelemszerűen memóriakorlátos, de ez nyilván evidens. :)


Egyébként elosztott rendszerekkel tovább lehet ezt bővíteni. Illetve ügyes matematikai trükkökkel néha leegyszerűsíthető a probléma úgy, hogy ne kelljen az egész számot tárolni, hanem csak egy részét.

2014. jún. 30. 21:10
Hasznos számodra ez a válasz?
 14/15 A kérdező kommentje:
No, most elvileg jól van átírva, minden intet lecseréltem unsigned long long int-re és minden double-t long doublre, de továbbra is a fenti probléma lép fel.
2014. júl. 1. 16:41
 15/15 A kérdező kommentje:
Nem szóltam, a szubrutinokban elfelejtettem átírni a típusokat, így már tökéletes, köszönöm szépen a segítséget!
2014. júl. 1. 19:25
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!