Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [C] Moltiplicazione di interi di lunghezza arbitraria
Forum - C/C++ - [C] Moltiplicazione di interi di lunghezza arbitraria - Pagina 13

Pagine: [ 1 2 3 4 5 6 7 8 9 10 11 12 13 ] Precedente | Prossimo
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 21:42
Giovedì, 24/07/2008
cavolata, ho capito:asd:

per questo ti avevo consigliato di usare un ciclo, comunque lo stavo provano prima e non funziona. prova ad allegare il file con il codice completo, così provo a guardarlo un attimo...

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 22:31
Giovedì, 24/07/2008
Funziona!

Ho preso come esempio il primo che avevi postato e sono riuscito a farlo funzionare.

Allora, per prima cosa vedi di usare un ciclo invece che la loadlist.

Secondo, mi sono fatto una funzione che trasforma int *num2 in int val.
In pratica metto in una sola variabile tutto quello a cui punta num2.
Mettila al posto della loadlist e aggiungi questo nel ciclo for:

printf("--->%d--->%d--->%d--->%d\n" , res[3], res[2], res[1], res[0]);

Serve per vedere passo passo il conto.

Allora, la funzione che trasforma *num in num te la fai da sola.
Es:
   1*10 = 10
   10*10 = 100
Quindi se hai un vettore con 2 2 2
cioè 222 devi moltiplicare sempre per 10 dopo aver sommato la cifra.
Provaci e fammi sapere
   :k:

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 22:46
Giovedì, 24/07/2008
@Lorenzo ... guarda che con il codice scritto in quel modo, ci sono enormi problemi di memory leak ...

Il codice della moltiplicazione infatti, non tiene affatto in considerazione le allocazioni di memoria fatte dalle numerose chiamate della add ...

Senza considerare l'estrema inefficienza di un codice che potrebbe eseguire miliardi di iterazioni e addizioni al posto di "moltiplicare" con l'algoritmo corretto (quello delle elementari ...)

Infine, se utilizzi un loop con un intero, non potrai gestire numeri oltre i 2 miliardi e rotti, cosi' che gia' con due numeri da 10 cifre quella funzione non potra' mai lavorare ...

Lo "spirito" dell'esercizio non era quello di usare la add gia' scritta ... la add NON doveva essere usata e doveva servire solo come "esempio" per la mult ...

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 22:56
Giovedì, 24/07/2008
questo non mi è stato detto. La richiesta era di far funzionare il codice, cosa che io ho fatto.

Se poi l'esercizio chiedeva qualcosa d'altro questo non è un problema mio se permetti. Dovrebbe essere lei a risolverselo. Magari avendo il mio come esempio potrebbe farcela anche da sola.

Quanto alla memoria, quando ho messo giù la funzione non ho nemmeno guardato la add, ho dato per scontato che si divesse usare quella(mi era comunque sembrato strano dato che il programma usa effettivamente quantità enormi di memoria per una semplice moltiplicazione).
Il codice però era quello e non conoscendo nemmeno il testo dell'esercizio ma solo il risultato...

PM Quote
Avatar
Misciu87 (Normal User)
Pro


Messaggi: 68
Iscritto: 01/07/2008

Segnala al moderatore
Postato alle 9:46
Venerdì, 25/07/2008
quindi devo modificare add con mult facendo passo passo una moltiplicazione in colonna?però ho scritto al mio prof e lui non mi ha detto nulla che è sbagliato a solo detto
Testo quotato

Postato originariamente da Misciu87:
in loadlist allocate una lista di interi di lunghezza  
uguale alla lunghezza di list. Quando la funzione termina
il puntatore res che prima puntava ad una lista lunga n+m ora punta  
ad una lista lunga quanto list.


PM Quote
Pagine: [ 1 2 3 4 5 6 7 8 9 10 11 12 13 ] Precedente | Prossimo