vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest sobota, 11 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Vba z iteracją


otwartyotwarty rozpoczął: nimitz postów: 6



napisał: nimitz
postów: 14


umieszczony:
11 maja 2005
17:33

  
Ok udało sie liczy jak chcę jeszcze tylko kilka uwag u doktora u ktorego ma ten program zdac i bedzie ok

Private Sub Licz_Click()

k = Val(TextBox1.Text)
p0 = Val(TextBox2.Text)
p1 = Val(TextBox3.Text)
pk = Val(TextBox4.Text)

Dim p1prim(0 To 10) As Double
Dim plprim(0 To 10) As Double
Dim pkprim(0 To 10) As Double
Dim t0(0 To 10) As Double
Dim t1(0 To 10) As Double
Dim i, j As Integer
Dim przyrost As Integer

i = 0

For przyrost = 0.1 To 1
   t0(i) = przyrost: t1(i) = przyrost
   p1prim(i) = Sqr(Abs(p0 * p0 - k * k * t0(i) * (pr * pr - p1 * p1)))
   pkprim(i) = Sqr(Abs(p1prim(i) * p1prim(i) - k * k * t1(i) * (pk * pk - p1 * p1)))
   
   
    If (pk - pkprim(i)) / pkprim(i) > -0.001 Or (pk - pkprim(i)) / pkprim(i) < 0.001 Then
     
     MsgBox p1prim(i)
     'Exit For - jeżeli chcesz zobaczyć tylko pierwszą wartość spełniającą warunek
     Else
        MsgBox "BraK"
                
   End If
   i = i + 1
Next przyrost

End Sub

napisał: pil
postów: 154


umieszczony:
6 maja 2005
10:29

  
Może spróbuj wartości kolejnych iteracji przechować w tablicach (i wtedy jest dostęp do wszystkich wartości), albo jeżeli nie to warunek If...End If powinien się znajdować wewnątrz pętli For...Next tak, by był sprawdzany przy każdej iteracji a nie po jej wykonaniu.
Private Sub CommandButton1_Click()

k = Val(TextBox1.Text)
p0 = Val(TextBox2.Text)
p1 = Val(TextBox3.Text)
pk = Val(TextBox4.Text)

Dim p1prim(0 to 10) as double
Dim plprim(0 to 10) as double
Dim t0(0 to 10) as double
Dim t1(0 to 10) as double
Dim i, j as Integer
Dim przyrost as integer

i=0

For przyrost = 0.1 To 1 Step
  t0(i) = przyrost: t1(i) = przyrost
  p1prim(i) = Sqr(Abs(p0 * p0 - k * k * t0(i) * (pr * pr - p1 * p1)))
  pkprim(i) = Sqr(Abs(p1prim(i) * p1prim(i) - k * k * t1(i) * (pk * pk - p1 * p1)))
  i=i+1
Next przyrost

For j=0 to UBound(pkprim)
  If (pk(j) - pkprim(j)) / pkprim(j) > -0.001 Or (pk(j) - pkprim(j)) / pkprim(j) < 0.001 Then
    MsgBox t0(j)
    MsgBox t1(j)
    MsgBox p1prim(j)
    'Exit For - jeżeli chcesz zobaczyć tylko pierwszą wartość spełniającą warunek
    Else
    MsgBox "BraK"
  End If
Next k

End Sub

napisał: nimitz
postów: 14


umieszczony:
5 maja 2005
12:03

  
napisałem taki program z user form
wystepuja w nim 4 textboxy i 1 comannd
po kliknieciu commmand przelicza mi to co mam tam pod spodem
ale liczy mi tylko dla ostatniego t0 i t1 a ja chcę zeby wybierało najlepsze t0 i t1 jak mam to zrobic

Private Sub CommandButton1_Click()

k = Val(TextBox1.Text)
p0 = Val(TextBox2.Text)
p1 = Val(TextBox3.Text)
pk = Val(TextBox4.Text)


For t0 = 0.1 To 1 Step 0.1
p1prim = Sqr(Abs(p0 * p0 - k * k * t0 * (pr * pr - p1 * p1)))
Next t0

For t1 = 0.1 To 1 Step 0.1
pkprim = Sqr(Abs(p1prim * p1prim - k * k * t1 * (pk * pk - p1 * p1)))

Next t1
If (pk - pkprim) / pkprim > -0.001 Or (pk - pkprim) / pkprim < 0.001 Then
MsgBox t0
MsgBox t1
MsgBox p1prim
Else
MsgBox "BraK"
End If

End Sub

napisał: nimitz
postów: 14


umieszczony:
12 kwietnia 2005
18:59

  
ok thx troche dawno mialem fortrana ale nic sie w Vba nie zmienilo
nie mogłem jakos sobie skojarzyc
jeszcze raz dzieki
napisał: admin
postów: 613


umieszczony:
11 kwietnia 2005
22:15

  
Iteracji?

10 kroków:
For i=1 to 10
'a tu operacje
Next i



albo aż uzyskany zostanie wystarczająco dokładny wynik:

Do
'tu obliczenia a=..., np. w jako sumy szeregu liczbowego
Loop While Abs(a-zadana_wartość)<=zadana_dokładność



Napisz wiecej, czego potrzebujesz...
napisał: nimitz
postów: 14


umieszczony:
11 kwietnia 2005
21:24

  
ma ktoś przykładowy kod w Vba dotyczcy iteracji
chodzi mi o petle i punkt wyjscia
jak to powinno wygladac


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z