|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
[C++] Lavorare su interi infiniti
il mio problema è questo: ho bisogno di creare un programma, una sorta di calcolatrice, che possa lavorare su interi infiniti...
la mia idea è quella di concatenare + interi (4 byte sono no?) in modo tale da non essere limitato nelle cifre... qualcuno può aiutarmi nella realizzazione?? qualche idea? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
infinito per modo di dire..ma dico che mi servirebbe lavorare ad esempio con un intero che abbia tipo 300 cifre...e dato che un int mi sembra ne possa contenere solo 16 o 32 (adesso non ricordo) dovrei riuscire a concatenarli e lavorare sui riporti no?
|
|
|
|
|
|
#3 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16213
|
Ci sono librerie C e C++ per gli interi di grandezza arbitraria; ma non mi ricordo come si chiamano...
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
A che scopo ti serve lavorare con numeri così grandi?
Comunque 300 cifre sono tante, sicuramente dovrai dividire i calcoli per numeri più piccoli. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
uhm...c'è qualcuno che può aiutarmi a trovare quelle librerie?? e per grandezza arbitraria cosa intendi??
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
ma è per dire...possono bastare anche 80-90 cifre..però è x trovare un modo che concateni in modo infinito gli interi, lavorando sui riporti penso..qualcuno ha altre idee??
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ma è per fare calcoli simili ai limiti o robe così?
Che ci posso fare sn curioso |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
è una sfida che mi hanno fatto..tutto qui..niente di che..non so a cosa potrebbe servire XD
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Capisco, comunque considerando i long(4 byte=32 bit) li puoi pensare invece che un numero singolo come una parte di numero, in quel modo non hai limiti di grandezza...teoricamente.
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
si..ma come faccio??
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ti devi studiare un buon sistema, ma il linea di massima potresti fare una cosa del tipo:
N=8749827489237426748236874 3724523462364326546327634 N1=8749827489237426748236874 N2=3724523462364326546327634 In pratica invece di considerare un unico grande numero, lo consideri come formato da più numeri piccoli. Però i calcoli, i riporti ecc ecc te li devi gestire te... Se non ti interessano i numeri con la virgola non è nemmeno tanto complicato, ma comunque bisogna studiarsi un po' la cosa. |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
Quote:
|
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
qualcuno può aiutarmi?
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1059
|
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
grazie per la segnalazione, il problema è che a me occorre lavorare in c++ (e non in c) e il numero di cifre non dovrebbe essere solo limitato a 20, ma dovrebbe lavorare in modo illimitato, quindi penso occorrerà utilizzare dei puntatori...
se c'è qualcuno di animo buono che può darmi qualche spunto e consigliarmi qualche libreria che contenga funzioni utili mi farebbe un grande favore.. |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
ecco qua
http://gmplib.org/
__________________
|Java Base| |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
ehm..dato che sono un po' niubbo, puoi spiegarmi come usare quella libreria??
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
se volete vi posto l'interfaccia del programma che penso di fare..
c'è una memo per inserire il numero, 4 bottoni per gli operatori (+,-,*,/) e il bottone di visualizza risultato (=) Ultima modifica di Goten_ssj : 13-05-2007 alle 17:15. |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Guarda, per fare una cosa basilare non vedo troppe difficoltà da affrontare.
Soluzione nr. 1: usi una libreria come quella che ti è stata suggerita. Soluzione nr. 2: te lo fai te. Per fartelo te hai diverse possibilità. Puoi tenerti il numero memorizzando le singole cifre in un array o in una lista o in una stringa ad esempio. Poi per le operazioni elementari (somma e moltiplicazione) fai come facevi alle elementari. Te le ricordi ancora le operazioni in colonna? bene... ad un livello base si fa cosi. Se però ti interessano le performance, per moltiplicare due numeri grandi ci sono algoritmi più efficenti, tipo quello di Karatsuba. Ma qui si che ci dovrai sbattere la testa un pò di più... Io mi terrei le cifre in un array o in una lista e poi a mano ti gestisci le operazioni di somma e moltiplicazione con il metodo che ti insegnano alle elementari.
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
si..pensavo di farmelo da me..non ho ancora ben capito bene come memorizzare e dividere i numeri di 40-50 cifre ad esempio per poi poterli usare per fare i calcoli
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:51.












|








