Kezdőoldal » Számítástechnika » Programozás » Nem tudok megoldani egy VBS...

HaBB_00 kérdése:

Nem tudok megoldani egy VBS feladatot. Valaki segít?

Figyelt kérdés

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.



2016. máj. 14. 22:44
 1/4 coopper ***** válasza:

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.

2016. máj. 15. 08:36
Hasznos számodra ez a válasz?
 2/4 coopper ***** válasza:

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.

2016. máj. 15. 08:56
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:
Köszönöm! Erre nem is gondoltam :D
2016. máj. 15. 10:13
 4/4 coopper ***** válasza:

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.

2016. máj. 15. 10:28
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!