Newsgroup: it.comp.lang.visual-basic
Titolo: Impossibile assegnare alla matrice

Salve a tutti
Mi sono scritto la routine quasotto che ordina la matrice U (dichiarata come
public) in base al contenuto della colonna Col. (Ordinamento in ordine
crescente)
Nrighe e Ncolonne sono costanti pubbliche. L'idea della routine č effetuare
un bubble sort e definire nel vettore "position" la posizione per poi
trasferire tutto in fondo.
La funzione č chiamata cosě: U=ReverseSort(U,2) ma mi viene generato
l'errore "impossibile asseganre alla matrice".
Ogni aiuto č bene accetto, grazie mille a tutti.
Pelo
'***************************************
Function ReverseSort(U, Col)
Dim AuxU(Nrighe,Ncolonne) As Double
Dim i,j As Integer
Dim Position(Nrighe), Aux As Integer
Dim Flag As Boolean
For i = 1 To Nrighe
    For j = 0 To Ncolonne
        AuxU(i, j) = U(i, j)
    Next j
      indice(i) = i
Next i
Do
    Flag = False
    For i = 1 To Nrighe
        If U(Position(i), Col) < U(Position(i + 1), Col) Then
            Aux = Position(i + 1)
            Position(i + 1) = Position(i)
            Position(i) = Aux
            Flag = True
        End If
    Next i
Loop Until Flag = False
For i = 1 To Nrighe
    For j = 0 To Ncolonne
        U(i, j) = AuxU(Position(i), j)
    Next j
Next i
End Function

> La funzione č chiamata cosě: U=ReverseSort(U,2) ma mi viene generato
Secondo me il problema sta proprio nella chiamata. non deve essere fatta
cosi ma :  call ReverseSort(U,2)
ciao
salvatore
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 l'errore "impossibile asseganre alla matrice".
Non so cosa sia U e cosa restituisca ReverseSort, ma entrambi devono 
essere array dinamici.
Ciao

 essere array dinamici.
Ciao!
                      |1  3  5|
se U è una matrice U= |2  6  9|
                      |9  4  8|
revesort (U,1) restituisce:
                 |1  3  5|
 revesort (U,2)= |9  4  8|
                 |2  6  9|
Non capisco però perchè devono essere array dinamici...
Ciao
Pelo

 cosi ma :  call ReverseSort(U,2)
Grazie.
L'errore non compare piů, ora speriamo che la routine sia giusta! ;-)
Stupidamente avevo dichiarato U pubblica perchč non sono mai riuscito a fare
restituire una matrice a una function, e poi non ho sfruttato il fatto! :-(
Ciao
Pietro

[Pelo = 
circa_IONON...@tin.it
 in
c3c8pm$25fqss$
1...@ID-71199.news.uni-berlin.de
] ha scritto:

ehm... non mi convince affatto..., anzi, proprio per niente.
Scommettiamo che hai cambiato dati e/o parametri? Se rimetti quelli di prima
l'errore si ripresenta?
Fermo restando che con quella chiamata il risultato era anche il parametro
passato (U) (ma questo dovrebbe essere lecito) quel era la riga che
provocava l'errore?

 Ogni aiuto è bene accetto, grazie mille a tutti.

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 provocava l'errore?
Era proprio U=ReverseSort(U,2)...
L'unico pezzo che non sono sicuro ci fosse anche prima e:
For i = 1 To Nrighe
    For j = 0 To Ncolonne
        U(i, j) = AuxU(Position(i), j)
    Next j
Next i
Perchè mi ero accorto che mancava mentre scrivevo il messaggio per il ng.
Comunque il programma non ci arrivava perchè si bloccava proprio
all'istruzione che ho riportato sopra e quindi penso sia ininfluente.
Ciao
Pelo

 
Non voglio sapere cosa c'è dentro, ma la loro dichiarazione.
Inoltre ReverseSort mi pare non restituisca un bel tubo, ma di sicuro 
non un array: ti sei dimenticato la dichiarazione!
 > Non capisco però perchè devono essere array dinamici...
Perchè altrimenti ti dà quell'errore là nell'assegnazione ;)
Ciao

 Non voglio sapere cosa c'è dentro, ma la loro dichiarazione.
U è dichiarata in un modulo come
public U(nrighe,ncolonne) as double
ReverseSort come function reversesort(U,Col as double) as double
Ciao
Pelo

 ReverseSort come function reversesort(U,Col as double) as double
Allora ti ripeto: sia U che ReverseSort devono essere dichiarati come 
array dinamici.
La tua situaziona attuale è
U è un array statico
ReverseSort è un Double
Ciao

 
Io sono ancora piů scettico di Lupo.
Ci sono troppe cose che non quadrano, a partire dal fatto che la 
Function non ritorna niente (e quindi l'errore era comunque garantito).
Ciao

 Ciao

 stesso istante", è parametro (modificato) e variabile assegnata?
Quello non è un problema perchè prima vengono valutati e modificati i
parametri passati alla function e poi viene riassegnato il valore (cioè due
volte lo stesso lavoro).
Il problema è che function non avendo dichiarazione è un varian e tu sai che
i variant non inizializzati sono Empty, che non è proprio il massimo da
assegnare a un array :P
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net