Войти

Показать полную графическую версию : [решено] Помогите с задачкой на VB!


Dim
16-04-2009, 22:53
Всем привет!
Я в школе работаю, решил детям вот такую задачку дать на Visual Basic:
Написать программу, печатающую на экране все символы веденного предложения, кроме символа "в".

Собственно код:
Private Sub Command1_Click()
Dim a As String
Dim c As String
Dim b As Integer
a$ = Text1.Text
b = 1
While b < Len(a$)
c$ = Mid(a$, b, 1)
If c <> "в" Then Form1.Print c$;
b = b + 1
Wend
End Sub

Результат в аттаче.

И вопрос: куда девается последний символ? так должно быть, или я чего-то недопонимаю?

Delirium
17-04-2009, 01:18
While b < Len(a$) »
А почему не меньше либо равно? b <= Len(a$)? Вы же как раз тут и теряете последний символ.

Dim
17-04-2009, 07:49
Помогло.
Большое Вам спасибо! :good:

Delirium
17-04-2009, 07:58
Dim, для спасибо есть такая кнопочка под ответом - "полезное сообщение" :)

Pliomera
17-04-2009, 10:06
или я чего-то недопонимаю? »

Вы действительно чего-то недопонимаете.
Весь Ваш код записывается одним-единственным оператором:

Private Sub Command1_Click()
Form1.Print Replace(Text1, "в", "")
End Sub

Вы же нафигачили туда аж три переменных разных типов и цикл.
Вы просто сами не знаете предмета, которому пытаетесь учить детей, и засираете им мозги, сорри, накипело...

Delirium
17-04-2009, 16:32
Зря ты так к человеку. Не обязательно записывать все одним оператором, школьники должны еще и циклы знать и переменные. Если смогут сделать проще, честь им и хвала :)

Pliomera
17-04-2009, 16:55
Delirium, согласен, погорячился.
Dim, приношу свои извинения за резкость.

Просто работать с такими "учениками" - сплошное мучение. И тратить личное время на "переучивание" таких "учеников" - не фонтан. И "переучиванию" они практически не поддаются.

Artjem
22-04-2009, 06:14
Доброго времени суток!
К сожалению я не знаком с VB, но есть опыт по другим языкам!
Может быть Вы подсчитываете количество символов в предложении, но не учитываете, что последний символ - это символ конца строки (по-крайней мере в ассемблере так). Попробуйте указать количество символов в предложении на один больше, и у Вас скорее всего всё получится!
Удачи!

Admiral
22-04-2009, 19:21
Artjem, в VB для элемента Text1 понятия конца строчки как такового нет.
Тут другой момент, нумерация массива в VB начинается с 1, а не с 0. По этому, как заметил Delirium нужно включать граничное значение, а не только брать меньше него.

Pliomera
23-04-2009, 00:18
нумерация массива в VB начинается с 1, а не с 0. »
Опа-на! С чего это вдруг? По умолчанию, как раз-таки с 0. Можно задать нумерацию массива с единицы принудительно - используя в декларативной части любого модуля конструкцию Option Base 1

В рассматриваемом случае массивы вообще не при чем, есть совершенно четко и ясно описанный синтаксис оператора Len, возвращающий длину строки в символах.




© OSzone.net 2001-2012