Forum » Pomoč in nasveti » Pisanje Preprostih Makrov
Pisanje Preprostih Makrov
Vodeb7 ::
Imam en problem glede naloge z makri ... navodila so tole, spodaj pa moja nepravilno delujoča koda
---------------------------------------------------------------------------------------------------------------------
Pri tej nalogi je potrebno napisati makre, ki bodo kodirale oz. dekodirale besedilo v Writerju z operacijo XOR. Za kodiranje oz. dekodiranje mora uporabnik vnesti geslo. Potrebno je napisati naslednje podprograme:
function izracunajHash(geslo, zacetni_hash) - v tej funkciji boste implementirali sekljalno funkcijo, ki bo iz uporabnikovega gesla izračunala začetno seme za generator psevdo naključnih števil (več o tem se nahaja v pomoči). Za sprejem naloge so postavljene naslednje dodatne zahteve:
Spremenljivka zacetni_hash naj ima nastavljeno vrednost 15172
V funkciji jemljete znake od prvega znaka proti zadnjemu
Sprehod preko znakov morate implementirati z zanko Do Until...Loop
function kodiraj(niz) - izhod iz funkcije bo kodiran/dekodiran vhodni niz. Predpostavite, da je generator naključnih števil že postavljen na pravilno vrednost (več o tem se nahaja v pomoči). Kodirajte le znake, katerih ascii vrednost je večja od 31. Za sprejem naloge so postavljene naslednje dodatne zahteve:
V funkciji jemljete znake od zadnjega znaka proti prvemu
Sprehod preko znakov morate implementirati z zanko Do While...Loop
sub kodiraj_besedilo(seme) - ta podprogram poskrbi, da se kodirajo vsi navadni odstavki v besedilu. Prav tako se v tem podprogramu izvrši inicializacija generatorja naključnih vrednosti
sub kodiraj_UI - ta podprogram vsebuje uporabniški vmesnik vašega makra in je v bistvu glavni program. V njem boste zahtevali geslo za kodiranje (privzeto geslo naj bo vaša vpisna številka) in poklicali prej spisane podprograme
---------------------------------------------------------------------------------------------------------------------
Sub Main
End Sub
function izracunajHash(geslo,zacetni_hash)
hash = zacetni_hash
maska=&H00FFFFFF
i=len(geslo)
if i>0 then
Do Until i=0
znak=Mid(geslo,i,1)
znak=asc(znak)
hash = 33*hash+znak
hash=hash AND &H00007FFF
i=i-1
Loop
hash=hash AND maska
izracunajHash=hash
else
izracunajHash=hash
end if
end function
function kodiraj(niz)
Dim i as Integer
dol_niza=Len(niz)
if dol_niza>0 Then
i=dol_niza
Do While i>0
znak_niza$=Mid(niz,i,1)
Dim A As Integer
A=Asc(znak_niza$)
if A>31 Then
B=CInt(rnd()*31)
A=A XOR B
znak_niza1$= Chr(A)
Mid(niz,i,1,znak_niza1$)
end if
i=i-1
Loop
end if
kodiraj=niz
end function
Sub kodiraj_besedilo(seme)
Randomize(seme)
oParEnum = ThisComponent.Text.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService("com.sun.star.text.Paragraph") Then
oPar.String = kodiraj(oPar.String)
End If
Loop
End Sub
Sub kodiraj_UI
geslo = InputBox("Vnesi niz:", "Geslo", "E1000000")
hash = izracunajHash(geslo, 15172)
kodiraj_besedilo(hash)
MsgBox("Konec")
end Sub
---------------------------------------------------------------------------------------------------------------------
Mi zna prosim kdo pomagat pa najdet napako? javlja mi tole:
Dolžina makrov v modulu MojModul.... 1130 (najbrž OK)
Testiranje funkcije izracunajHash(niz, zacetniHash)
Sprehod naprej
Vhod: niz=A1234567, zacetniHash= 9843
Pričakovan izhod: 21760 (Tip: Long)
Dobljen izhod: 11424 (Tip: Long) ...Napaka
Testiranje funkcije izracunajHash(niz, zacetniHash) s praznim nizom (robni primer)
Testiranje funkcije function kodiraj(niz)
Sprehod nazaj
Testiranje funkcije function kodiraj(niz) s praznim nizom (robni primer)
---------------------------------------------------------------------------------------------------------------------
problem je v tem delu, ker se zanka premalokrat zavrti ....
Pričakovan izhod: 21760 (Tip: Long)
Dobljen izhod: 11424 (Tip: Long)
---------------------------------------------------------------------------------------------------------------------
function izracunajHash(geslo,zacetni_hash)
hash = zacetni_hash
maska=&H00FFFFFF
i=len(geslo)
if i>0 then
Do Until i=0
znak=Mid(geslo,i,1)
znak=asc(znak)
hash = 33*hash+znak
hash=hash AND &H00007FFF
i=i-1
Loop
hash=hash AND maska
izracunajHash=hash
else
izracunajHash=hash
end if
end function
---------------------------------------------------------------------------------------------------------------------
Pri tej nalogi je potrebno napisati makre, ki bodo kodirale oz. dekodirale besedilo v Writerju z operacijo XOR. Za kodiranje oz. dekodiranje mora uporabnik vnesti geslo. Potrebno je napisati naslednje podprograme:
function izracunajHash(geslo, zacetni_hash) - v tej funkciji boste implementirali sekljalno funkcijo, ki bo iz uporabnikovega gesla izračunala začetno seme za generator psevdo naključnih števil (več o tem se nahaja v pomoči). Za sprejem naloge so postavljene naslednje dodatne zahteve:
Spremenljivka zacetni_hash naj ima nastavljeno vrednost 15172
V funkciji jemljete znake od prvega znaka proti zadnjemu
Sprehod preko znakov morate implementirati z zanko Do Until...Loop
function kodiraj(niz) - izhod iz funkcije bo kodiran/dekodiran vhodni niz. Predpostavite, da je generator naključnih števil že postavljen na pravilno vrednost (več o tem se nahaja v pomoči). Kodirajte le znake, katerih ascii vrednost je večja od 31. Za sprejem naloge so postavljene naslednje dodatne zahteve:
V funkciji jemljete znake od zadnjega znaka proti prvemu
Sprehod preko znakov morate implementirati z zanko Do While...Loop
sub kodiraj_besedilo(seme) - ta podprogram poskrbi, da se kodirajo vsi navadni odstavki v besedilu. Prav tako se v tem podprogramu izvrši inicializacija generatorja naključnih vrednosti
sub kodiraj_UI - ta podprogram vsebuje uporabniški vmesnik vašega makra in je v bistvu glavni program. V njem boste zahtevali geslo za kodiranje (privzeto geslo naj bo vaša vpisna številka) in poklicali prej spisane podprograme
---------------------------------------------------------------------------------------------------------------------
Sub Main
End Sub
function izracunajHash(geslo,zacetni_hash)
hash = zacetni_hash
maska=&H00FFFFFF
i=len(geslo)
if i>0 then
Do Until i=0
znak=Mid(geslo,i,1)
znak=asc(znak)
hash = 33*hash+znak
hash=hash AND &H00007FFF
i=i-1
Loop
hash=hash AND maska
izracunajHash=hash
else
izracunajHash=hash
end if
end function
function kodiraj(niz)
Dim i as Integer
dol_niza=Len(niz)
if dol_niza>0 Then
i=dol_niza
Do While i>0
znak_niza$=Mid(niz,i,1)
Dim A As Integer
A=Asc(znak_niza$)
if A>31 Then
B=CInt(rnd()*31)
A=A XOR B
znak_niza1$= Chr(A)
Mid(niz,i,1,znak_niza1$)
end if
i=i-1
Loop
end if
kodiraj=niz
end function
Sub kodiraj_besedilo(seme)
Randomize(seme)
oParEnum = ThisComponent.Text.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService("com.sun.star.text.Paragraph") Then
oPar.String = kodiraj(oPar.String)
End If
Loop
End Sub
Sub kodiraj_UI
geslo = InputBox("Vnesi niz:", "Geslo", "E1000000")
hash = izracunajHash(geslo, 15172)
kodiraj_besedilo(hash)
MsgBox("Konec")
end Sub
---------------------------------------------------------------------------------------------------------------------
Mi zna prosim kdo pomagat pa najdet napako? javlja mi tole:
Dolžina makrov v modulu MojModul.... 1130 (najbrž OK)
Testiranje funkcije izracunajHash(niz, zacetniHash)
Sprehod naprej
Vhod: niz=A1234567, zacetniHash= 9843
Pričakovan izhod: 21760 (Tip: Long)
Dobljen izhod: 11424 (Tip: Long) ...Napaka
Testiranje funkcije izracunajHash(niz, zacetniHash) s praznim nizom (robni primer)
Testiranje funkcije function kodiraj(niz)
Sprehod nazaj
Testiranje funkcije function kodiraj(niz) s praznim nizom (robni primer)
---------------------------------------------------------------------------------------------------------------------
problem je v tem delu, ker se zanka premalokrat zavrti ....
Pričakovan izhod: 21760 (Tip: Long)
Dobljen izhod: 11424 (Tip: Long)
---------------------------------------------------------------------------------------------------------------------
function izracunajHash(geslo,zacetni_hash)
hash = zacetni_hash
maska=&H00FFFFFF
i=len(geslo)
if i>0 then
Do Until i=0
znak=Mid(geslo,i,1)
znak=asc(znak)
hash = 33*hash+znak
hash=hash AND &H00007FFF
i=i-1
Loop
hash=hash AND maska
izracunajHash=hash
else
izracunajHash=hash
end if
end function
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Facebook več sto milijonov gesel hranil v besedilni oblikiOddelek: Novice / Zasebnost | 9994 (7243) | MrStein |
» | C# program za pretvorbo v desetiško število z rekurzijoOddelek: Programiranje | 1501 (1224) | MrStein |
» | [c#] program za kodiranje besedil, gesel,...Oddelek: Programiranje | 2849 (2461) | LightBit |
» | PHP - Register formOddelek: Izdelava spletišč | 1987 (1615) | roli |
» | kopiranje iz enega fajla v drug??Oddelek: Programiranje | 1224 (984) | Seth |