Izmenjujoči se soglasniki in samoglasniki

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

Izmenjujoči se soglasniki in samoglasniki

Odgovor Napisal/-a missy »

Pozdravljeni,

ponovno se vam oglašam in posim za pomoč pri naslednjem makroju!

Napiši funkcijo, ki za dano besedo ugotovi, ali je sestavljena iz izmejujočih se soglasnikov in samoglasnikov. Beseda se sme začeti s soglasnikom ali soglasnikom.

primer: beseda -ok
funkcija- ni ok

Hvala, Missy.
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Algoritem je sledeč:
1. Pripravite niz1, ki je sestavljen iz vseh samoglasnikov (niz1="aeiou") in niz2, ki je sestavljen iz vseh soglasnikov (niz2="bc.....")
2. Vzamite prv črko besed in preverite v katerem nizu se nahaja. Če se nahaja med samoglasniki postavite neko spremenljivko niz=1, če se nahaja med soglasniki pa niz=2
3. V zaniki se sprehodite skozi vse preostale črke besede in pri vsaki črki določite kam spada. Če črka spada v niz1 in je prejšnja bila v nizu2 potem je OK ali obratno in zato nadaljujete z zanko. Če ni OK, pa zanko prekinete in rečete, da beseda ne ustreza.
4. Če ste prišli do konca zanke potem beseda ustreza.
lp,
Matjaž Prtenjak
Administrator
missy
Prispevkov: 40
Pridružen: To Apr 11, 2006 7:03 pm

Odgovor Napisal/-a missy »

Pozdravljeni,

nekaj sem poskušala spacati skupaj, pa nimam velikega uspeha! Spodaj sem vam zapisala kodo, ki mi ne dela seveda, ker ne vem če sem sploh na pravi poti! Prosila bi vas če mi lahko malo pomagate!

Koda: Izberi vse

Sub preveri()

niz1 = "aeiou"
niz2 = "bcdfghjklmnprsštvzž"
beseda = InputBox("Vnesi besedo za preverjanje!")

If ActiveDocument.Characters.First = niz1 Then
    niz = 1
Else
    niz = 2
End If

For i = 2 To ActiveDocument.Characters.Last
    
    If ActiveDocument.Characters(i) = niz1 Then
        niz = 1
    Else
        niz = 2
    End If
    
    If ActiveDocument.Characters(i) = niz1 And ActiveDocument.Characters(i - 1) = niz2 Or ActiveDocument.Characters(i) = niz2 And ActiveDocument.Characters(i - 1) = niz1 Then
        MsgBox ("Beseda je ok!")
    Else
        MsgBox ("Beseda ni ok!")
    End If
Next
    

End Sub
Lp, Missy.
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Preden sploh nadaljujeva..... Kakšno zvezo ima spodnji IF stavek z besedo, ki ste jo vnesli?

Koda: Izberi vse

If ActiveDocument.Characters.First = niz1 Then 
Vi ste vnesli neko besedo v spremenljivko beseda in potem te spremenljivke nikjer več ne uporabljate!!!!!!!

Koda: Izberi vse

Ali se prve črka besede nahaja v niz1? To je pravi if stavek!
Potrebno bo torej uporabiti funkcije mid (ali left) ter instr!
lp,
Matjaž Prtenjak
Administrator
missy
Prispevkov: 40
Pridružen: To Apr 11, 2006 7:03 pm

Odgovor Napisal/-a missy »

Hm,

mislim, da ne bo šlo!

Koda: Izberi vse

Sub preveri()

niz1 = "aeiou"
niz2 = "bcdfghjklmnprsštvzž"
beseda = InputBox("Vnesi besedo za preverjanje!")

If Left(beseda, 1) = niz1 Then
    niz = 1
Else
    niz = 2
End If

........
Ne vem kako naj uporabim funkcijo instr!

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

Odgovor Napisal/-a admin »

Funkcija inStr vam pove ali se neka beseda nahaja v nekem nizu. To pomeni, da vam lahko pove tudi ali se neka črka (črka je pač beseda z enim samim znakom) nahaja v nizu... To pa je tisto kar potrebujete!
lp,
Matjaž Prtenjak
Administrator
missy
Prispevkov: 40
Pridružen: To Apr 11, 2006 7:03 pm

Odgovor Napisal/-a missy »

Razumem kako naj zgleda algoritem, vendar tega ne znam zapisati!!

Mislim, da sem ostala na prazni točki! Ne znam naprej!
missy
Prispevkov: 40
Pridružen: To Apr 11, 2006 7:03 pm

Odgovor Napisal/-a missy »

Prosila bi vas če mi napišete rešitev, pa ne zato ker bi bila lena, ampak zato, ker mi ne gre!

Lp, missy.

Hvala.
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Začetek kode bo takšenle:

Koda: Izberi vse

Sub preveri()
  niz1 = "aeiou"
  niz2 = "bcdfghjklmnprsštvzž"
  beseda = InputBox("Vnesi besedo za preverjanje!")

  If InStr(niz1, Left(beseda, 1)) Then
    niz = 1
  Else
    niz = 2
  End If

........ 
Ostanek pa je zelo podoben, le da v for zanki... Uporabili pa boste funkcije InStr ter Mid!
lp,
Matjaž Prtenjak
Administrator
Odgovori