Pagina 1 di 1
problema con gcc
Inviato: domenica 10 giugno 2007, 14:43
da macisamuele
ho un piccolo problema io ho scritto 1 programma ke se lo compilo su mac (utilizzando gcc 4.01) mi gira ma ... se lo compilo su ubuntu (avendo installato gcc versione 4:4.1.2) non mi funziona bene...percè???grazie
Re: problema con gcc
Inviato: domenica 10 giugno 2007, 14:48
da max.achille
Cosa significa non mi funziona bene? segnala qualche errore? E' sempre possibile ci sia un errore che su Mac semplicemente non si manifesta e compare su Linux per una diversa gestione della memoria del SO ad es..
Re: problema con gcc
Inviato: domenica 10 giugno 2007, 14:54
da macisamuele
praticamente ho scritto 1 programma x la semplificazione in frazioni di numeri...compilandolo su mac mi funziona bene...(scrivendo come numero 2.15 mi da come risultato 43/20)...compilandolo su ubuntu mi esce qst...
Codice: Seleziona tutto
samuele@samuele-desktop:~$ '/home/samuele/nuovo'
INSERISCI IL NUMERO DA CUI RICAVARE LA FRAZIONE: 2.15
parte intera 2
parte dopo la virgola 0.150000
LA FRAZIONE NON SEMPLIFICATA E': 21500001/10000000
4508877/2097152
grazie 1000
Re: problema con gcc
Inviato: domenica 10 giugno 2007, 16:02
da macisamuele
x il codice in c andate al
http://www.devid-filoni.com/?p=41 e lo troverete!!!vi prego rispondete
Re: problema con gcc
Inviato: domenica 10 giugno 2007, 17:48
da max.achille
Credo che il problema non sia tanto il gcc quanto l'algoritmo in se, in particolare questa riga:
while(((int)(((a*100000000)*e)/100000000)) != ((float)(a*e))) {
bhe in un corso di analisi numerica la sconsigliano molto.. credo che sei andato a "cozzare" contro un problema della precisione macchina. Magari in Mac OS la citata gestione della memoria porta a delle "semplificazioni" nel calcolo che fanno portare il tutto.. Anche il numero di conversioni int/float non fa molto bene al corretto risultato finale. Prova cosa succede utilizzando dei long int o dei double nelle variabili.. Credo comunque andrebbe ricercato un algoritmo numericamente più stabile! :-\
Re: problema con gcc
Inviato: martedì 12 giugno 2007, 16:41
da Uno
max.achille ha scritto:
Credo comunque andrebbe ricercato un algoritmo numericamente più stabile! :-\
Si, anche secondo me il problema è tutto lì.
Io risolverei così, banalmente se moltiplico un numero con N cifre dopo la virgola per 10^N ottengo un numero intero, percui se x è un numero con N cifre dopo la virgola allora x = (x * 10^N) / 10^N dove numeratore e denominatore sono numeri interi, a questo punto conviene trovare il MCD di questi e ridurre la frazione ai minimi termini.