|
|
|
|
Strumenti |
20-10-2012, 16:46 | #1 |
Junior Member
Iscritto dal: Apr 2011
Messaggi: 10
|
[C++] Funzione modulo per numeri molto grandi
Salve a tutti,
sto lavorando ad un progetto abbastanza complesso in cui ho bisogno di trasformare dei numeri decimali molto grandi in numeri in base 3. Per fare ciò ho scritto una funzione che utilizza la funzione modulo. Il problema è che se uso % oppure fmod, il programma non funziona per numeri più grandi di E24. Voglio dire, il programma compila, ma se ad esempio faccio fmod(3e25,3), dovrebbe darmi resto 0, invece mi dà resto 1. Ho provato allora a scrivere una funzione modulo utilizzando la definizione: resto = dividendo - parte_intera(quoziente)*divisore; Il problema però è ottenere la parte intera di un numero molto grande. Se faccio floor() oppure il casting con (long long int) non funziona con numeri maggiori di E24 (compila ma dà valori sbagliati). Cosa posso fare? Grazie a tutti. nb: ho bisogno di lavorare con numeri che possono arrivare anche a E50 |
20-10-2012, 19:00 | #3 |
Junior Member
Iscritto dal: Apr 2011
Messaggi: 10
|
Potresti darmi una mano ad installarlo?
Ho seguito le indicazioni: ./configure make make check e sembra tutto a posto. Ora ho provato a compilare un programma d'esempio che ho trovato in wikipedia http://en.wikipedia.org/wiki/GNU_Mul...hmetic_Library ma mi dice fatal error: gmp.h: File o directory non esistente compilation terminated. Non ho mai usato librerie esterne a c++, quindi non so bene cosa devo fare. Grazie |
20-10-2012, 21:34 | #4 |
Junior Member
Iscritto dal: Apr 2011
Messaggi: 10
|
Sono riuscito ad installarlo correttamente e compila.
Ora però ho un nuovo problema, se aggiungo ad esempio la libreria iostream allo stesso codice, non mi compila più e mi dà il seguente errore: gcc -o sim sim.c -lgmp sim.c:75:21: fatal error: iostream: File o directory non esistente compilation terminated. |
20-10-2012, 21:48 | #5 |
Junior Member
Iscritto dal: Apr 2011
Messaggi: 10
|
Sono un cretino, dovevo usare g++
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:34.