Newsgroup: it.comp.lang.visual-basic
Titolo: Aiuto per overflow

Ho scritto un programmino che mi trova il determinante di una matrice, però
funziona solo con matrici piccole, io devo trattare una matrice 340X340 ed
il programma mi segnala un overflow, avete qualche consiglio da darmi?

 Ho scritto un programmino che mi trova il determinante di una matrice,
però funziona solo con matrici piccole, io devo trattare una matrice 340X340
ed il programma mi segnala un overflow, avete qualche consiglio da darmi?
Si`: posta almeno il codice delle dichiarazioni (Dim)  e quello della riga
in cui va in errore.
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 wrote in message
9095o9$cpg3$1...@ID-52090.news.dfncis.de...


 > Si`: posta almeno il codice delle dichiarazioni (Dim)  e quello della
riga in cui va in errore.

1. Fatto trenta... facciamo trentuno, no? Cosa c'e` scritto nel file? (Se
entrano schifezze... escono schifezze. Prima legge dell'informatica.)
2. La riga:
    diag_fin(k) = appoggio(k, k) / (appoggio(k, k) ^ esp)
va sicuramente in overflow quando "appoggio(k, k)" vale zero. E`
un`eventualita` sicuramente da scartare o e` opportuno effettuare un test
prima di eseguire tale riga?
3. Non usi Option Explicit. Male!
4. Evita di usare l'operatore "+" nelle concatenazioni.
5. Sono quattro dico quattro righe di codice! Come fai a dire "si blocca
ogni volta su un punto diverso della procedura"?!? Si blocchera` su due,
tre, quattro, metti CINQUE righe! Perche' non le segnali? Facciamo gli
indovinelli? (Ok, ok... mi sono calmato:-)
6. Istruzione End. Dove hai letto che si usa? Scrivi piuttosto:
    Private Sub Command2_Click()
        Unload Me
    End Sub
7. 340 x 340 fa 115.600. Ossia un numero che supera la capacita` di un
Integer. Non ho ancora badato alla logica del tuo programma per cui ti dico
solo di stare attento a questo "particolare".



Ovviamente ti ringrazio molto per il tuo interessamento ed approfitto per
chiederti quale può essere un buon testo a cui io possa riferirmi per
imparare.
A parte le altre cose che mi hai detto, che mi saranno senz'altro utilissime
(programmo da appena 5 giorni) volevo chiederti in particolare 2 cose.
1. se 340X340 supera la capacità di un integer come posso risolvere? E'
meglio rinunciare?
2. Sono ormai certo che l'overflow non può essere dovuto ad un valore nullo
della variabile, ho verificato inoltre che ciò che conta non è tanto la
dimensione della matrice (come avevo erroneamente pensato) ma la grandezza
dei numeri in essa contenuti. In pratica ci sono delle successive
moltiplicazioni i cui risultati sono numeri enormi. La riprova di questo
l'ho avuta sviluppando una matrice 150 X 150 ma in cui il prodotto dava
sempre 1, in quel caso ci sono voluti alcuni secondi ma il risultato era
corretto, in pratica il programma arriva a moltiplicare 1x1x1.. 150 volte ed
andava, ma già con tutti 2 si ferma ben presto.
Secondo te posso cercare una soluzione a questo problema o è meglio togliere
mano e prendere in considerazione altri programmi tipo mathlab o qualcosa
del genere.
p.s. anche excel non riesce a fare i calcoli che servono a me.
Ti ringraqzio ancora, sei gentilissimo

 Ti ringraqzio ancora, sei gentilissimo
:-)


 finche' non ci cacciano... ;-)
Non sia mai ! :-)
Ciao
Aldo

Fatti anche un giro su:
 
http://members.xoom.it/flanguasco/
e troverai di sicuro materiale interessante per le problematiche che stai
trattando; per esempio: Matrici.zip
