Tabela kot argument?

Pomoč pri izdelavi makrov
Odgovori
missy
Prispevkov: 40
Pridružen: To Apr 11, 2006 7:03 pm

Tabela kot argument?

Odgovor Napisal/-a missy »

Pozdravljeni,

Imam sledečo nalogo:

Napišite funkcijo, ki kot argument sprejme tabelo 10 števil in poišče najdaljše naraščajoče podzaporedje.
Napišite funkcijo tako, da kot rezultat vrne dolžino najdaljšega naraščajočega podzaporedja.

pr
1 2 5 3 2 6 8 12 4 7 ----- rešitev je 2 6 8 12

Zanima me, kako napišem funkcijo, ki sprejme kot argument tabelo?
Poleg tega pa, kako tako funkcijo kličem?

Hvala za odgovor.

p.s. Napisala sem tole kodo, vendar je ne znam preveriti ali sploh deluje, ker je na znam kliciti! Tako, da sem morda zgrešila bistvo naloge!

Koda: Izberi vse

Function najdaljse(t) As Integer

t = Array("1", "2", "5", "2", "6", "8", "12", "4", "7")
Max = 0
st = 0

For i = 0 To 8
    If t(i) < t(i + 1) Then
        st = st + 1
        temp = st
        If temp < st Then
            temp = st
            st = 0
        End If
    ElseIf t(i) > t(i + 1) Then
        i = i + 1
    End If
Next
najdaljse = temp

End Function
Lp, missy.
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

cccc.... :oops:

Lahko vas napotim na vašo sošolko ... 'sončico' :)

http://www.matjazev.net/forum/viewtopic.php?t=255

PS: In na kateri šoli vas tako "morijo"?
lp,
Matjaž Prtenjak
Administrator
missy
Prispevkov: 40
Pridružen: To Apr 11, 2006 7:03 pm

Odgovor Napisal/-a missy »

Pozdravljeni,

jaz sem to nalogo mal drugače rešila, in me dejansko zanima samo kako podam argument kot tabelo in kako potem to kličem!!

Koda pa je sledeča:

Koda: Izberi vse

Function najdaljse() As String
Dim zap As String

t = Array("1", "2", "5", "3", "2", "6", "8", "12", "14", "7")
Max = 0
st = 0
temp = 0
zap = ""
izpis = ""

For i = 0 To 9
    If CInt(t(i)) > temp Then
        zap = zap & " " & t(i)
        st = st + 1
    Else
        If (st > Max) Then
            izpis = zap
            Max = st
        End If
        zap = t(i)
        st = 1
    End If

 temp = t(i)
Next

MsgBox ("Zaporedje je: " & izpis)
MsgBox ("Maximalno zaporedje dolžine: " & Max)

End Function
Lp, missy.
GoldZ
Prispevkov: 137
Pridružen: Če Sep 01, 2005 10:20 am

Odgovor Napisal/-a GoldZ »

Pozdravljeni!

Rešitev vašega problema je sledeča:

Koda: Izberi vse

Sub klici_najdaljse()
    Call najdaljse
End Sub
:D
Življenje je enostavno, če poznaš "The Secret".
GoldZ
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

če prav razumem, vas zanima samo, kako neko tabelo predati v funkcijo/proceduro... In točno ta odgovor najdete tudi v že omenjeni tematiki:

Koda: Izberi vse

Sub GlavnaFunkcija()
    Dim stevila As Variant
    stevila = Array(1, 2, 3, 5, 2, 6, 8, 9, 10) 

    ' tako predate tabelo v funkcijo
    NajdiNajdaljseZaporedje stevila
End Sub 

' in tako izgleda zaglavje funkcije
Sub NajdiNajdaljseZaporedje(stevila As Variant) 
end sub
lp,
Matjaž Prtenjak
Administrator
missy
Prispevkov: 40
Pridružen: To Apr 11, 2006 7:03 pm

Odgovor Napisal/-a missy »

Pozdravljeni,


Mislim, da se nismo razumeli! Jaz bi rada podala tabelo kot argument in jo napolnila potem pri klicu te funkcije, ker tako zahteva naloga!

Če napišem tako kot ste mi vi podali in kot sem tudi jaz že v moji fukciji zapisala potem je ta tabela, ki je podana znotraj te funkcije nekako fiksna!

Nekdo bi samo klic funkcije pognal pa bi se vedno ta koda izvajala čez ta podana števila-tega pa jaz ne želim!!

Nekako takole: sub klic()
najdaljše (t=array(1,3,5,12,14,1,2,3,4,5))
end sub
Ne vem kaka oblika je pravilana, ker nisem imela še takega problema!


Upam, da smo se razumeli, kaj sem hotela povedati!

Lp, missy.
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Glede na najin primer, je klic trivialen:

Koda: Izberi vse

NajdiNajdaljseZaporedje Array(4, 56, 56, 56, 78, 78,98,90,1,3,76,789,2,8)
lp,
Matjaž Prtenjak
Administrator
missy
Prispevkov: 40
Pridružen: To Apr 11, 2006 7:03 pm

Odgovor Napisal/-a missy »

Hvala za tako hiter odgovor!

Sem že provala in dela!

Tega nisem vedela kako to zapišeš v ta klic funkcije!!

Še enkrat najlepša hvala!
-------------------------------------------------------------------------
missy
Odgovori