PDA

Visualizza la versione completa : [C++] Gestione di numeri interi molto grandi (bigint)


klaima
15-06-2007, 17:55
ciao gente..
io dovrei fare una libreria per la gestione degli interi grandi (i cosidetti bigint)
ce qualcuno ke puo aiutarmi?

oregon
15-06-2007, 18:02
Una richiesta un po' generica mi pare ...

In un forum si danno aiuti ... ovviamente non si scrive tutto di sana pianta (quello sarebbe un lavoro ...).

Tu chiedi e sarai aiutato nel limite del possibile ...

klaima
15-06-2007, 18:11
gia..hai ragione...
cioe...tipo per memorizzare un numero tipo 228229292020020020202......ke struttura dati mi consigliate....io avrei intenzione di utilizzare un vector...dove ognui cifra andra messa nella posizione iesima..ke ne dite..?

oregon
15-06-2007, 18:22
Un semplice array di byte potrebbe essere piu' efficiente e veloce ...

klaima
15-06-2007, 19:37
Originariamente inviato da oregon
Un semplice array di byte potrebbe essere piu' efficiente e veloce ...

in ke senso..scusa...cioe siccome io sono un programmatore java..e nn sono esperto di c++...devo utilizzare qualke stl di c++...o mi devo creare un array di byte per conto mio?

oregon
15-06-2007, 20:22
Per questo tipo di problemi e' preferibile usare elementi molto veloci.

Il consiglio e' proprio quello di usare semplici buffer (array di byte, classici del C) per immagazzinare il valore e una apposita classe per gestire le operazioni con tale tipo di dato.

klaima
16-06-2007, 09:25
Originariamente inviato da oregon
Per questo tipo di problemi e' preferibile usare elementi molto veloci.

Il consiglio e' proprio quello di usare semplici buffer (array di byte, classici del C) per immagazzinare il valore e una apposita classe per gestire le operazioni con tale tipo di dato.

cioe quindi per esempio..se io ho un numero tipo 238388383838383.....lo posso memorizzare in un array di byte...ma poi nn sorge il problema della dimensione dell'array..cioe di quante dimensione n lo devo dikiarare l'array?

Samuele_70
16-06-2007, 09:45
Dato che programmi in C++, utilizza una std::string, ed elimini il problema alla radice.

oregon
16-06-2007, 10:05
Fai un passo indietro ... hai definito le caratteristiche della libreria?

Ovvero ... i valori (per quanto big ...) non potranno mai avere un numero di cifre "infinito" ...

Quindi devi comunque gestire un "massimo" numero di cifre ...

Se utilizzi le string di C++ (vedi Samuele) puoi risolvere piu' semplicemente il problema ma non puoi "ottimizzare" il tutto perche' non puoi intervenire sul codice con cui sono implementate le string.

La cosa ottimale, ma piu' lunga e complessa (dato che la tua e' una libreria) e' creare da zero un nuovo tipo di oggetto (bignumber ad esempio) che provveda ad allocare/deallocare/modificare la memoria che gli serve e gestire il valore associato (con i relativi operatori somma, sottrazione ... ecc...)

klaima
16-06-2007, 10:54
grazie ragazzi delal vostra collaborazione..davvero molto utile.....credo che le stringhe siano la cosa piu' adatta....poii io siccomne abituato alle api di java..dove ci sono tutte le classi utilizzabili definite dal linguaggio..dove posso trovare qualcosa di simile per c++?

Loading