Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 14 odgovora
  • 3.270 pregleda

Najnovija ↓

Matrica u vb2008 03.05.2010. u 00:27 · pre 200 meseci #1
Treba da napravim matricu treceg reda gde svaka vrsta ima razlicite vrednosti,da izgleda ovako:



Znam da napravim ovako nesto :

Code:
 Dim mat(2, 2) As Double


    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i, j, c As Double
        c = 1
        For i = 0 To 2
            For j = 0 To 2
                mat(i, j) = c
                c += 1
                TextBox1.Text += CStr(mat(i, j)) + vbTab
            Next
            TextBox1.Text += vbCrLf
        Next
    End Sub


(da na jedan klik ispisuje matricu (1,2,3,4,5,6,7,8,9), znam i da u matrici budu sve iste vrednosti , ali nikako mi ne uspeva da napravim da u prvoj vrsti pise 2,4 drugoj 9,1 trecoj 0,5. (ili nesto slicno)
ako moze mala pomoc bila bih jako zahvalna.
Re: Matrica u vb2008 03.05.2010. u 02:10 · pre 200 meseci #2
Pa, moglo bi npr. ovako (uz minimalne modifikacije):

Code (vbnet):

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
          Dim i, j, c As Double
          Dim vals() As Double = {2.4, 9.1, 0.5}
          c = 1
          For i = 0 To 2
               For j = 0 To 2
                    mat(i, j) = c
                    c += vals(i)
                    TextBox1.Text += CStr(mat(i, j)) + vbTab
               Next
               TextBox1.Text += vbCrLf
          Next
     End Sub
 
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Matrica u vb2008 03.05.2010. u 02:50 · pre 200 meseci #3
Hvaala,prepravila sam ovako : :)

Code:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i, j, c As Double
        Dim vals() As Double = {2.4, 9.1, 0.5}
        For i = 0 To 2
            For j = 0 To 2
                c = vals(i)
                mat(i, j) = c
                TextBox1.Text += Str(mat(i, j)) + vbTab
            Next
            TextBox1.Text += vbCrLf
        Next
    End Sub
End Class


Samo sto mi u trecoj vrsti umesto "0.5" pise samo ".5 " jel' to nema veze ako recimo hocu da saberem dijagonalu i moze li uopste da pise 0.5?
Re: Matrica u vb2008 03.05.2010. u 11:24 · pre 200 meseci #4
Probaj da umesto Str funkcije koristis mat(i, j).ToString(). Ako nece tako, onda dodaj parametar za format stringa. Nisam siguran kako ide tacno, ali mozes videti u dokumentaciji.
Inace, bolje ti je da koristis .ToString() i inace, jer je to standardna .NET funkcija dok je Str() specificna za vb.net.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Matrica u vb2008 03.05.2010. u 11:36 · pre 200 meseci #5
U C# moze ovako:
double.ToString("0.00"); //ako hocesh dve decimale
tako da pretpostavljam da bi trebalo da radi ako napishesh ovako:
mat(i,j).ToString("0.0");//ili koliko vec budesh htela decimalnih mesta.

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: Matrica u vb2008 03.05.2010. u 13:06 · pre 200 meseci #6
Hvala probacu.

Sad imam jos jedan problem, napravila sam da se na klik dugmeta racuna suma svih elemenata prve vrste,to izgleda ovako i radi:

Code:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click


        Dim i, j, sumavrsta1 As Double
        For i = 0 To 2
            For j = 0 To 2
                If i + j = j Then
                    sumavrsta1 += mat(i, j)

                End If
            Next
        Next
        TextBox1.Text = Str(sumavrsta1)


Ali hocu da napravim da se umesto ovoga poziva takva funkcija na klik dugmeta,napravila sam u modulu ovako: (ali ne radi)

Code:


Module Module1
    Public mat(2, 2) As double

    Public Function funsum(ByVal sumavrsta1 As Double)
        Dim i, j As Double

        For i = 0 To 2
            For j = 0 To 2
                If i + j = j Then
                    sumavrsta1 += mat(i, j)

                End If
            Next
        Next

    End Function
End Module



A u klik dogadjaju dugmeta ovako:

Code:


Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        TextBox1.Text = Str(funsum(Val(TextBox1.Text)))


Zbunjuje je me kada pravim funkciju u modulu sto imam vise promenljivih i ByVal, pa ne znam gde gresim, da li pogresno postavljam promenljive u funkciji ili gresim u klik dogadaju,sve sam kombinacije probala i nikako da proradi.
Re: Matrica u vb2008 03.05.2010. u 13:30 · pre 200 meseci #7
Verovatno bi bilo bolje da ti odgovori neko ko radi u vb.net-u, ali i mene
je zanimalo kako se to radi, pa sam malo pogledao i evo kako mislim da
treba. Naime, f-ja ima povratnu vrednost i nju deklarises van zagrada, a
ne treba joj nijedan parametar ako uvek radi sumu prve vrste. I da bi tu
vrednost koju si izracunala (sumvrsta1) vratila pozivas Return (vrednost)

Code (vbnet):

Module Module1
      Public mat(2, 2) As double

      Public Function funsum() As Double
         Dim i, j As Double

          For j = 0 To 2
                  sumavrsta1 += mat(0, j)
          Next
         
     Return(sumavrsta1)
      End Function
  End Module
 


A ako bi htela da f-ja radi sumu za vrstu koju joj ti kazesh, onda ce
imati parametar redni broj vrste

Code (vbnet):

Module Module1
      Public mat(2, 2) As double

      Public Function funsum(ByVal rbVrste as Integer) As Double
         Dim i, j As Double

          For j = 0 To 2
                  sumavrsta1 += mat(rbVrste, j)
          Next
         
     Return(sumavrsta1)
      End Function
  End Module
 



Code (vbnet):


  Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
  System.EventArgs) Handles Button4.Click
          TextBox1.Text = funsum().ToString()
     'ili TextBox1.Text = funsum(1).ToString() // recimo
 


Nadam se da ce ti ovo pomoci.

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: Matrica u vb2008 03.05.2010. u 14:09 · pre 200 meseci #8
Vidi ovo:
Code (vbnet):


Module Module1
      Public mat(2, 2) As double

      Public Sub subsumIspravno(ByRef sumavrsta1 As Double)
          Dim i, j As Double
              For j = 0 To 2
                      sumavrsta1 += mat(, j)
              Next
      End Sub


      Public Sub subsumNeispravno(ByVal sumavrsta1 As Double)
          Dim i, j As Double
              For j = 0 To 2
                      sumavrsta1 += mat(, j)
              Next
      End Sub
  End Module


Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
  System.EventArgs) Handles Button4.Click
     Dim c As Double
     c = 0
     subsumNeispravno(c)
     'posle ovoga c je i dalje 0, jer u ovoj proceduri napravljena je kopija  
vrednosti koja je upisana u sumavrsta1
     subsumIspravno(c)
     'poslata je adresa promenjive c i parametar sumavrsta1 ustvari  
predstavlja promenljivu c,
     ' tj. ako menjash sumavrsta1 ustvari menjash c, i na tu adresu je  
upisivan zbir svih elemenata
          TextBox1.Text = c.ToString()
     
 


Kljucna stvar je da prosledish c ne po vrednosti, nego po adresi
(referenci - ByRef), jer ako prosledjujesh parametar po vrednosti(ByVal)
stvara se kopija vrednosti koju poshaljesh, na primeru koji si dala
sumavrsta1, i onda na nju dodajesh sve elemente prve vrste, ali ti ustvari
dodajesh na kopiju koja se napravila u f-ji, a ne na onaj original. Znaci
ako hocesh da posaljesh promenljivu kao parametar i da mozesh direktno da
joj menjash vrednost, morash da taj parametar bude prosledjen ByRef.
Znaci, moglo je i tako da se uradi, ali mislim da je bolje ona prva
verzija, sa f-jom a ne procedurom. Onaj tvoj nacin je bio negde izmedju,
jer si sumu upisivala u sumavrsta1 koja je parametar unutar f-je, a opet,
pri pozivu si je koristila kao f-ju a ne proceduru, tako da sam mislio da
bi ti koristilo i ovo.

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: Matrica u vb2008 03.05.2010. u 14:09 · pre 200 meseci #9
edit, probam pa javljam.
Re: Matrica u vb2008 03.05.2010. u 14:23 · pre 200 meseci #10
Sta god da probam dobijem 0 kao rezultat.
Re: Matrica u vb2008 03.05.2010. u 14:23 · pre 200 meseci #11
Meni se sve chini da ti je prazna matrica. :) Po ovom zadnjem kodu koji si
okachila, mat je deklarisana iznad f-je, i ne vidim gde se popunjava.
Proveri da li upishesh u nju one vrednosti, i da li je to ista ona matrica
koju mi koristimo u f-ji funsum .
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: Matrica u vb2008 03.05.2010. u 22:06 · pre 200 meseci #14
Ta druga f-ja radi zato shto ne koristi matricu. Naime, matrica na koju se
pozivash u f-ji za sumu el. prve vrste, nije ista matrica koju si kreirala
na formi. Jedna je unutar klase form1, a druga unutar modula. F-ja iz
modula ne moze da pristupa matrici u klasi forme. Nema dometa. Matrica
definisana unutar klase vazi samo za tu klasu. Tako da jedina ispravka
koju treba da uradish jeste da kada pozivash funkciju za rachunanje sume
prve vrste, joj poshaljesh matricu kao parametar, da bi imala matricu za
koju rachuna prvu vrstu. :)

znachi, ovako neshto:
Code (vbnet):

     Public Function funsum(ByVal mat(2,2) As Double) As Double
          'ovde onaj kod koji si koristila u f-ji
     End Function
 


I na kraju, kad pozivash f-ju, na neko dugme, pozvacesh je:
Code (vbnet):

     textBox1.Text = funsum(mat).ToString() 'ili ono tvoje Str(funsum(mat)) :P
 


Sad nemam vishe vremena, pa ti bez provere ovo ostavljam da probash,
trebalo bi da radi. I ona f-ja shto si napisala, radila bi da nije bila u
odvojenom modulu. Slabo stojim sa VB-om pa nisam odmah znao(niti
razmishljao) da taj modul nije u istom fajlu. Mislim da je ovo bio jedini
problem. F-ja je rachunala prvu vrstu prazne matrice. Javi kako je proshlo.

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: Matrica u vb2008 04.05.2010. u 00:12 · pre 200 meseci #15
Ok javljam ,sad sam nesto umorna pa mi ne ide, probacu sutra :)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme