PDA

Показать полную графическую версию : Помогите решить задачу по изменению позиции букв в слове


ymka_0@vk
26-12-2012, 23:15
20. Ввести слово и образовать новое слово, заменив в нем букву, стоящую на заданной позиции на другую заданную букву.

Sub задача8()
Dim slovo As String, buk As String, a As String
Dim b As String, f As String, c As String, k As Integer, poz1 As Integer, poz2 As Integer, p As String, q As String
slovo = InputBox("ââåäèòå ñëîâî")
k = Len(slovo)
poz1 = Val(InputBox("ïîçèöèÿ1"))
poz2 = Val(InputBox("ïîçèöèÿ2"))
If poz1 > poz2 Then
q = poz1 - poz2
Else
q = poz2 - poz1
End If
p = Mid(slovo, poz1, 1)
buk = Mid(slovo, poz2, 1)
If poz1 >= 1 Then
a = Mid(slovo, 1, poz1 - 1)
Else: a = ""
End If
b = Mid(slovo, poz1 + 1, q - 1)
f = Mid(slovo, poz2 + 1)
c = p
p = buk
buk = c
d = a + p + b + buk + f
MsgBox d
End Sub

Подскажите как можно это сделать, я так понимаю по заданной позиции найти символы и поменять их местами, а как это изобразить не понимаю.

Iska
27-12-2012, 00:14
ymka_0@vk, я задание понял немного иначе: ввести слово, позицию и заменяющую букву. Впрочем, Вам виднее. Раз:
я так понимаю по заданной позиции найти символы и поменять их местами, »
пусть так и будет.

Вот Ваш вариант (без каких-либо проверок ввода):
Option Explicit

Sub Задача8()
Dim strWord As String

Dim lngPos1 As Long
Dim lngPos2 As Long

Dim lngTempPos As Long

strWord = Trim(InputBox("Введите слово:"))
lngPos1 = CLng(InputBox("Введите позицию 1-й буквы для обмена:"))
lngPos2 = CLng(InputBox("Введите позицию 2-й буквы для обмена:"))

If lngPos1 > lngPos2 Then
lngTempPos = lngPos1
lngPos1 = lngPos2
lngPos2 = lngTempPos
End If

MsgBox _
Mid(strWord, 1, lngPos1 - 1) & _
Mid(strWord, lngPos2, 1) & _
Mid(strWord, lngPos1 + 1, lngPos2 - (lngPos1 + 1)) & _
Mid(strWord, lngPos1, 1) & _
Mid(strWord, lngPos2 + 1)
End Sub


Другой вариант:
Sub Задача8_1()
Dim strWord As String

Dim lngPos1 As Long
Dim lngPos2 As Long

Dim strTempChar As String

strWord = Trim(InputBox("Введите слово:"))
lngPos1 = CLng(InputBox("Введите позицию 1-й буквы для обмена:"))
lngPos2 = CLng(InputBox("Введите позицию 2-й буквы для обмена:"))

strTempChar = Mid(strWord, lngPos2, 1)
Mid(strWord, lngPos2, 1) = Mid(strWord, lngPos1, 1)
Mid(strWord, lngPos1, 1) = strTempChar

MsgBox strWord
End Sub




© OSzone.net 2001-2012