Oppure

Loading
20/04/09 20:26
10gc
Ciao a tutti, sto tentando di studiare il VB.Net dalla guida di Totem (ottima). Tra gli esercizi che ho trovato sul suo sito ce n'è uno che chiede di scrivere un funzione che deve restituire i valori di un equazione di secondo grado. Io ho scritto il codice, però ho un problema con la funzione return: nel caso del delta > 0, come posso far ritornare dalla funzione due valori? Con un valore ce la faccio, ma con due proprio no.
Grazie mille :hail:

Module Module1
    Function soluzioni(ByVal a As Long, ByVal b As Long, ByVal c As Long)
        Dim delta, x1, x2 As Long
        delta = (b ^ 2) - 4 * a * c

        If delta = 0 Then
            Return x1 = (-b) / (2 * a)
        Else
            If delta < 0 Then
                Return 0
                If delta > 0 Then
                    Return x1 & x2   'come si fa??
                End If

            End If
        End If

        x1 = (-b + Math.Sqrt(delta)) / 2 * a
        Return x1
    End Function

    Sub Main()
        Dim a, b, c, d As Long
        Console.WriteLine("Inserisci a,b,c:")

        a = Console.ReadLine
        b = Console.ReadLine
        c = Console.ReadLine

        d = soluzioni(a, b, c)
        Console.WriteLine(" La soluzione è =" & d)
        Console.ReadKey()

    End Sub

End Module


Non mi mangiate per eventuali errori 8-|


PS: poi vorrei farvi un'altra domanda, ma sugli array mono e bidimensionali.
Ultima modifica effettuata da 10gc 20/04/09 20:28
aaa
20/04/09 20:54
punkettone90
una funzione restituisce sempre un solo dato

variabile_che_prende_valore_ritorno = funzione();

ti propongo 2 soluzioni al problema:

- fai in modo che la funzione restituisca un array con dimensione 2, quindi

double[] array = funzione(...)
prima_x = array[0]
seconda_x = array[1]

in questo caso nella funzione prepari un array in cui metti dentro le 2 x


- passi x1 e x2 alla funzione non per valore ma per riferimento, in queso modo i valori che dai alle 2 x all'interno della funzione sono permanenti anche fuori dalla funzione
aaa
20/04/09 20:59
lorenzo
da definizione matematica una funzione è una corrispondenza biunivoca che si può descrivere con f:A->B o con y = f(x)

ciò significa che deve e può restituire solo un valore singolo.
se si vuole restituire più valori bisogna che i parametri passati in ingresso alla funzione siano passati come byRef

ByRef significa che il passaggio non avviene per valore ma per riferimento, cioè viene passato l'indirizzo e quindi è possibile modificarne il valore.
aaa
20/04/09 21:46
theprogrammer
Postato originariamente da lorenzo:

da definizione matematica una funzione è una corrispondenza biunivoca che si può descrivere con f:A->B o con y = f(x)

ciò significa che deve e può restituire solo un valore singolo.


In realta' ci sarebbero le funzioni vettoriali e le funzioni polidrome ...
aaa
21/04/09 10:24
lorenzo
era per semplificare dato che non aveva fatto una domanda di matematica ma una domanda di programmazione strettamente pratica....
aaa
21/04/09 10:30
theprogrammer
Perche' prendete tutto come un "rimprovero"?

Era solo per allargare il tuo commento matematico ...
aaa
21/04/09 10:49
lorenzo
ma infatti non lo avevo preso per un rimprovero e stavo solo spiegando le mie motivazioni....dato che la matematica non è il mio pezzo forte non volevo addetrarmi troppo per non dire cavolate :rotfl:
aaa
21/04/09 10:59
theprogrammer
Postato originariamente da lorenzo:

ma infatti non lo avevo preso per un rimprovero e stavo solo spiegando le mie motivazioni....dato che la matematica non è il mio pezzo forte non volevo addetrarmi troppo per non dire cavolate :rotfl:


Ok ... mi sembrava ti fossi offeso, e volevo chiarire ... sai com'e', non si sa mai su questo forum ...
aaa