Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите решить задачу по изменению позиции букв в слове (http://forum.oszone.net/showthread.php?t=250058)

ymka_0@vk 26-12-2012 23:15 2054119

Помогите решить задачу по изменению позиции букв в слове
 
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 2054161

ymka_0@vk, я задание понял немного иначе: ввести слово, позицию и заменяющую букву. Впрочем, Вам виднее. Раз:
Цитата:

Цитата 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



Время: 17:13.

Время: 17:13.
© OSzone.net 2001-