Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Problema con arrey
Forum - Visual Basic 6 - Problema con arrey

Avatar
dade (Normal User)
Newbie


Messaggi: 18
Iscritto: 26/02/2009

Segnala al moderatore
Postato alle 16:39
Giovedė, 26/02/2009
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:

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 17:00
Giovedė, 26/02/2009
Codice sorgente - presumibilmente VB.NET

  1. Dim n As Double
  2.     Dim i As Long
  3.     Dim vet(100) As Double, vet1(100) As Double
  4.    
  5.     n = Val(Text1.Text)
  6.     For i = 1 To n
  7.         vet(i) = Val(InputBox("Numero??", "Numero"))
  8.         vet1(i) = vet(i) ^ 2
  9.     Next i
  10.    
  11.     For i = 1 To n
  12.         Print vet1(i) - vet(i)
  13.     Next i



P.S. Si scrive array ...

PM Quote
Avatar
dade (Normal User)
Newbie


Messaggi: 18
Iscritto: 26/02/2009

Segnala al moderatore
Postato alle 17:05
Giovedė, 26/02/2009
Grazie mille!!!
Ma quindi l'errore stava nel metter vet(k), giusto??

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 17:08
Giovedė, 26/02/2009
Testo quotato

Postato originariamente da dade:

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



Beh ... sė, la variabile k non era necessaria, anzi sbagliata.

PM Quote
Avatar
dade (Normal User)
Newbie


Messaggi: 18
Iscritto: 26/02/2009

Segnala al moderatore
Postato alle 17:49
Giovedė, 26/02/2009
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!!!

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 18:02
Giovedė, 26/02/2009
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 il 26/02/2009 alle 18:33
PM Quote
Avatar
dade (Normal User)
Newbie


Messaggi: 18
Iscritto: 26/02/2009

Segnala al moderatore
Postato alle 18:26
Giovedė, 26/02/2009
Grazie mille!!!

PM Quote