Oppure

Loading
26/02/09 15:39
dade
a tutti ho bisogno di aiuto!!!:-?
Sono in terza superiore e devo risolvere un problema con gli arrey in vb:
Memorizza in un vettore N numeri reali, con N<=100.
Calcola i quadrati degli N numeri e memorizzali, ordinatamente, in un altro vettore. Alla fine stampa la differenza fra ogni numero e il suo quadrato.
Il mio tentativo è stato questo:

Private Sub Command1_Click()
Dim n, num, vet(100), vet1(100), quad, diff As Integer
n = Val(Text1.Text)
For i = 1 To n
num = Val(InputBox("Numero??", "Numero";))
vet(i) = num
quad = num * num
vet1(k) = quad
Next i
For i = 1 To n
diff = vet1(k) - vet(i) & vbCrLf

Print diff
Next i
End Sub
Il problema è ke fa la differenza solo dell'ultimo numero inserito!!
HELPPP!!!!:hail:
aaa
26/02/09 16:00
theprogrammer
    Dim n As Double
    Dim i As Long
    Dim vet(100) As Double, vet1(100) As Double
    
    n = Val(Text1.Text)
    For i = 1 To n
        vet(i) = Val(InputBox("Numero??", "Numero"))
        vet1(i) = vet(i) ^ 2
    Next i
    
    For i = 1 To n
        Print vet1(i) - vet(i)
    Next i


P.S. Si scrive array ...
aaa
26/02/09 16:05
dade
Grazie mille!!!
Ma quindi l'errore stava nel metter vet(k), giusto??
aaa
26/02/09 16:08
theprogrammer
Postato originariamente da dade:

Ma quindi l'errore stava nel metter vet(k), giusto??


Beh ... sì, la variabile k non era necessaria, anzi sbagliata.
aaa
26/02/09 16:49
dade
Ultima domanda!!! Come faccio a incolonnare più valori di un array??

Private Sub Command1_Click()
Dim n, i, vet(100), vet1(100), somma, diff As Integer
n = Val(Text1.Text)
For i = 1 To n
num1 = Val(InputBox("numero", "num";))
num2 = Val(InputBox("aa", "a";))
vet(i) = num1
vet1(i) = num2
somma = num1 + num2
diff = num1 - num2

Text2.Text = Str(somma) & vbCrLf
Text3.Text = Str(diff) & vbCrLf
Next i

End Sub
Così si sovrappongono!!!
aaa
26/02/09 17:02
theprogrammer
Qualche correzione che pensavo avessi visto nel codice che ti avevo mostrato ...

1) non e' necessario utilizzare variabili temporanee per trattare gli elementi degli array; puoi utilizzare direttamente gli elementi. Cioe', invece di scrivere

num1 = Val(InputBox("numero", "num";))
num2 = Val(InputBox("aa", "a";))
vet(i) = num1
vet1(i) = num2

puoi scrivere direttamente

vet(i) = Val(InputBox("numero", "num";))
vet1(i) = Val(InputBox("aa", "a";))

senza utilizzare num1 e num2. Questo rende il codice piu' leggibile.

Per le somme e le differenze puoi scrivere

Text2.Text = Text2.Text & Str(vet(i) + vet1(i)) & vbCrLf
Text3.Text = Text3.Text & Str(vet(i) - vet1(i)) & vbCrLf

senza usare somma ne' diff.

In questo modo, vedrai tutti i valori che saranno aggiunti ai textbox ma devi settare la proprieta' Multiline dei due textbox a True.

2) Nelle Dim e' bene inserire il TIPO della variabile usata, altrimenti vengono dichiarate tutte di tipo Variant. Quindi

Dim n As Long, i As Long
Dim vet(100) As Double, vet1(100) As Double
Ultima modifica effettuata da theprogrammer 26/02/09 17:33
aaa
26/02/09 17:26
dade
Grazie mille!!!
aaa