Nem tudok megoldani egy VBS feladatot. Valaki segít?
Infó könyvben volt, gyakorolni akartam, és csak úgy szórakozásból meg akartam csinálni. Bonyolultabb mint hittem. A lényege hogy "madárnyelvre" kell lefordítani a szót amit beírunk (Minden magánhangzó után egy v betű + a magánhangzó pl. ember = evembever). A programommal az a baj hogy egy változóban tárolja el , és ha két magánhangzó van, a változóban levő adat felülíródik :( Itt a program. Valakinek ötlete? (madny = madárnyelv)
option explicit
dim szo, i, madny
szo = inputbox("Add meg a szót amit madárnyelvre fordítok!")
for i=1 to len(szo)
if mid(szo, i, 1)="a" or mid(szo, i, 1)=á ...stb.
madny = mid(szo, 1, i) & "v" & mid(szo, i, 1) & mid(szo, i+1, (len(szo))-i)
'pl. madny = e & "v" & e & mber
end if
next
msgbox(madny)
Így azt fogja kiírni hogy embever. mert az előző változtatást (evember) felülírta.
Szia.
Szerintem :
1. A for cikluson kivül le kell nullázni a madny változót
2. A for cikluson belül a madny változóhoz hozzá kell füzni az aktuális szó karakterét
3. a for cikluson belülüli If-en belül pediglen csak a "v" karaktert kell a madny változóhoz füzni,
valahogy igy :
option explicit
dim szo, i, madny, char1
szo = inputbox("Add meg a szót amit madárnyelvre fordítok!")
madny="" ' 1. pont: nullázás
for i=1 to len(szo)
_ _ char1=mid(szo, i, 1) ' aktuális karakter
_ _ madny=madny&char1 ' 2. pont: Összefüzés
_ _ if instr (1,"aáeéiíoóöőuú...",char1, vbBinaryCompare) <>0 then
_ _ _ _ madny=madny&"v" ' 3. pont: Plusy V-betű hozzárakása
_ _ _ _'pl. madny = e & "v" & e & mber
_ _ end if
next i
msgbox(madny)
Sok sikert.
üdv.
A másik módszer (a Te módszered) :
akkor viszont ugyanabba a változóba kell rakni a módositásokat amibe bekéred, tehát vagy szo vagy madny.
illetve mivel igy a hossz változik, a for ciklust do-loop-re kell cserélni, és mégegy az összefüzésben is van egy felesleges mid, valahogy igy :
option explicit
dim i, madny, char1
madny = inputbox("Add meg a szót amit madárnyelvre fordítok!")
i=0
do
_ _ i=i+1
_ _ char1=mid(madny, i, 1)
_ _ if instr (1,"aáeéiíoó....",char1, vbBinaryCompare) <>0 then
_ _ _ _ madny=mid(madny, 1, i) & "v" & mid(madny, i+1, (len(madny))-i)
_ _ _ _ 'pl. madny = e & "v" & e & mber
_ _ end if
loop Until i>=len (madny)
msgbox(madny)
Sok sikert.
Üdv.
Szia.
Mindkét megoldásom hibás mivel kimaradt a V betű utáni maganhangzó (szövegértés = 0 nállam legalábbis)
Tehát a jó megoldások :
1 esetben az if belseje változik :
_ _ if instr (1,"aáeéiíoóöőuú...",char1, vbBinaryCompare) <>0 then
_ _ _ _ madny=madny&"v"&char1 ' 3. pont: Plusz V-betű + magánhangzó hozzárakása
_ _ _ _'pl. madny = e & "v" & e & mber
_ _ end if
A második esetben is az IF belseje változik, de ott m;g a ciklus változót is növelni kell mert a következő lépésben "újra" megtalálná a magánhangzót :
_ _ if instr (1,"aáeéiíoó....",char1, vbBinaryCompare) <>0 then
_ _ _ _ madny=mid(madny, 1, i) & "v" & char1 & mid(madny, i+1, (len(madny))-i)
_ _ _ _ i=i+1
_ _ _ _ 'pl. madny = e & "v" & e & mber
_ _ end if
Üdv és bocs.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!