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

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

Dim 16-04-2009 22:53 1096245

Помогите с задачкой на VB!
 
Вложений: 1
Всем привет!
Я в школе работаю, решил детям вот такую задачку дать на 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 1096352

Цитата:

Цитата Dim
While b < Len(a$) »

А почему не меньше либо равно? b <= Len(a$)? Вы же как раз тут и теряете последний символ.

Dim 17-04-2009 07:49 1096416

Помогло.
Большое Вам спасибо! :good:

Delirium 17-04-2009 07:58 1096420

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

Pliomera 17-04-2009 10:06 1096489

Цитата:

Цитата Dim
или я чего-то недопонимаю? »

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

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

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

Delirium 17-04-2009 16:32 1096822

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

Pliomera 17-04-2009 16:55 1096839

Delirium, согласен, погорячился.
Dim, приношу свои извинения за резкость.

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

Artjem 22-04-2009 06:14 1100616

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

Admiral 22-04-2009 19:21 1101242

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

Pliomera 23-04-2009 00:18 1101554

Цитата:

Цитата Admiral
нумерация массива в VB начинается с 1, а не с 0. »

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

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


Время: 03:45.

Время: 03:45.
© OSzone.net 2001-