Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Visual Basic (VB).

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

NEOMATRIX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Данный топик предназначен только для обсуждения типовых задач на Visual Basic.
Обсуждение задач на VBA (а именно, Excel, Word, Access) строго запрещено!
Пишите в соответствующих топиках.

 
Родственные топики:
  • Excel VBA - часть 1, часть 2 - все вопросы по Excel VBA туда
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • VBScript - программирование "удобняшек" на VBScript
  • QBasic - типовые задачи на QBasic
     
  • Date Time Functions In Visual Basic
  • VB6's Trig, Math, Financial, Boolean, and Random functions
  • Visual Basic 6 String Functions
  • VB6 Number System Functions (Hex, Oct, Etc)
  • VB6's DateAdd function
     
  • Functions (Visual Basic)
  • Keywords and Members by Task
  • Visual Basic Reference
     
  • Visual Basic String Manipulation Tutorials
     
  • Top 10 Visual Basic Sins

     
    Учебники:
    Visual Basic для студентов и школьников. Культин Н. (2010)
    Занимательное программирование на Visual Basic.NET. Климов А. (2005)
    Visual Basic в задачах и примерах. Сафронов (2009)
    Visual Basic 2012 на примерах. Зиборов В. (2012)

  • Всего записей: 202 | Зарегистр. 29-12-2004 | Отправлено: 19:30 16-11-2005 | Исправлено: XPerformer, 10:07 28-10-2014
    Kiri4V



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rush, Legio
     
    Низкий поклон Спасибо.
     

    Всего записей: 4 | Зарегистр. 11-06-2009 | Отправлено: 16:02 14-06-2009
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kiri4V

    Цитата:
    на этой строке программа останавливается и пишет "run time error "9" subscript out of range"  
     
    Мне думалось, что опшен базе у тебя в единицу установлен. Так как у тебя все циклы перебора массивов с единицы начинались.
    Да и подзабыл я васик уже маленько. Так что извиняй.

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 14:36 15-06-2009
    Jecstor



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Помогите пожалйуста:
     
    Вводится строка слов, не менее 5, разделенных точкой с запятой. После нажатия на кнопку “ВЫПОЛНИТЬ” в список Результаты помещаются все слова из введенной строки, состоящие больше, чем из 5 букв, а в поле Количество – количество слов, удовлетворяющих этому условию.
    Введенная строка и удовлетворяющие условию слова сохраняются на рабочем листе в ячейках таблицы, располагаясь в соседних столбцах.

    Всего записей: 3 | Зарегистр. 19-07-2006 | Отправлено: 11:33 16-06-2009
    Crazyblind

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jecstor
     
    i = 1
    a$ = Text1.Text
    For m = 1 To Len(a$)
    If Mid(a$, m, 1) = ";" Then skobka = skobka + 1
    Next
    For j = 1 To skobka
    b$ = ""
    While Mid(a$, i, 1) <> ";"
    b$ = b$ + Mid(a$, i, 1)
    i = i + 1
    Wend
    If Len(b$) > 5 Then Text2.Text = Text2.Text + b$+" ": Text3.Text = Val(Text3.Text) + 1
    i = i + 1
    Next
    End Sub
     
    Не совсем понял про таблицу в конце, все сделано в текстовых полях. Если что, извините, буду теперь с вами. Учусь на программиста(в шараге =/), заканчиваю 2ой курс. Задачки порешать всегда полезно.

    Всего записей: 17 | Зарегистр. 20-05-2009 | Отправлено: 22:05 17-06-2009
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Crazyblind

    Цитата:
    Задачки порешать всегда полезно.

    Конечно. Практика - это главное.
    Зачем ты заморачиваешься так с текстом? Гораздо проще вычленить слова функцией split.
    Примерно так:

    Код:
     
    private sub Command1_Click()
       dim arrword
       dim i as integer, word as string
          List1.Clear
          arrword = split(Text1.Text, ";")
          for i = lbound(arrword) to ubound(arrword)
             word = trim$(arrword(i))
             if len(word) > 5 then List1.AddItem word
          next
          Text2.Text = cstr(List1.ListCount)
    end sub

    Где Command1 - кнопка "Выполнить", Text1 - текстбокс с введенными словами, List1 - список со словами больше 5 букв, Text2 - текстбокс с количеством этих слов.

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 04:13 18-06-2009
    Crazyblind

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rush
     
    Мне литературы надо больше читать, функции то split не знал . Вот из-за этого так и заморачиваюсь;). Вот с тобой и буду практиковаться

    Всего записей: 17 | Зарегистр. 20-05-2009 | Отправлено: 05:58 18-06-2009
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Crazyblind

    Цитата:
    Мне литературы надо больше читать, функции то split не знал  

    http://forum.ru-board.com/topic.cgi?forum=33&topic=5993&start=680#14

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 13:38 18-06-2009
    Crazyblind

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rush
     
    Спасибо огромное, кстати программки, не прорешанные на той странице еще актуально порешать?

    Всего записей: 17 | Зарегистр. 20-05-2009 | Отправлено: 17:30 18-06-2009
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Crazyblind
    Никто не запрещает. Если вопрос задан - ответ всегда приветствуется.

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 17:38 18-06-2009
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Crazyblind

    Цитата:
    Мне литературы надо больше читать, функции то split не знал  

    А просто в шапке посмотреть...

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 00:35 19-06-2009
    Crazyblind

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp
     
     

    Цитата:
    А просто в шапке посмотреть...

     
    Ну-у, делаю программу из того что знаю. Экзамены вот закончились. Надо будет тут задачки порешать

    Всего записей: 17 | Зарегистр. 20-05-2009 | Отправлено: 12:55 19-06-2009
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Crazyblind
    Да я вот об этом.
    Цитата:
    Мне литературы надо больше читать, функции то split не знал  

    В шапке же специально стоят ссылки на описание фунций. Еще и по группам отсортированы.
    Просто полистать, посмотреть что существует

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 20:35 19-06-2009 | Исправлено: dneprcomp, 20:37 19-06-2009
    Crazyblind

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    В шапке же специально стоят ссылки на описание фунций. Еще и по группам отсортированы.  
    Просто полистать, посмотреть что существует

     
     
    !!!Я надеюсь мы сейчас закончим . Я сделал ту программу без функции split, и думал это нормально мучеться с текстом, я же не самоучка, поэтому не знаю всех функций, меня как научили так и делал, после мне Rush показал как сделать то же самое без моих мук, вот я и решил почитать побольше! . Все хватит
     

    Всего записей: 17 | Зарегистр. 20-05-2009 | Отправлено: 00:29 20-06-2009
    Midbaril

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброй ночи! Только месяца 3, как "подключился" к VBasic-у (6-ому), но нижеследующую проблемку не могу решить неделю...
     В одной из процедур - обычный математический расчет и промежуточный результат "обрезается" через Format. Имеется внушительный ряд фиксированных значений, одно из которых, в зависимости от промежуточного результата, будет являться конечным результатом задачи. Так вот мне нужно, чтобы из этого ряда подбиралось значение, максимально близкое к промеж-ному рез-ту.
     Скажем, имеется ряд из: 1,2; 2; 2,4; 3; 5,1;... Промежут-ый рез-т получился - 2,3. Значит в ответ должно пойти - 2,4.
     Как это сделать? Каждое фиксир. значение в Select Case (или в Choose) вписывать...? Это такая громадина получится! И таких математ. процедур несколько...

    Всего записей: 15 | Зарегистр. 21-06-2009 | Отправлено: 01:13 21-06-2009
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Midbaril
    Можно к примеру последовательно в цикле делать [значение ряда] - [полученное] с запоминанием предыдущего результата. Внутри этого же цикла помещаем несколько If Then c возможными вариантами соотношений двуx результатов и [значение ряда]. Таких соотношений будет не много.

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 01:49 21-06-2009 | Исправлено: dneprcomp, 01:52 21-06-2009
    Midbaril

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp
    Не совсем понял (с моим-то стажем...). Речь о цикле For...Next? Я понимаю, что где-то в программе придется ввести весь ряд фиксир. значений (около 84 штук), но... на сколько понимаю, не в цикл For...Next. Он не поддерживает подобное. У него всего два значения - от сих до сих. Или не так?
    Может, пример кода приведете. Может, так попробую и пойму (или не пойму)
     
    Добавлено:
    dneprcomp
    И потом... Допустим, попыхтел я и создал 84 строки Select Case (или For...Next, или If Then)... Но каким кодом/оператором/функцией подбирать БЛИЖАЙШЕЕ значение из ряда? Вот в чем загвоздка!

    Всего записей: 15 | Зарегистр. 21-06-2009 | Отправлено: 02:43 21-06-2009
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Midbaril
    Prototype

    Код:
     
    Dim CurentResult as decimal
    Dim ResultPrev as decimal
    Dim intListCount as integer
    intListCount = (сколько надо значений) -1       'k примеру 84
    'Объявляем массив и заполняем его значениями ряда
    Dim arрList(intListCount) as decimal
    arрList(0)=1.2
    arрList(1)=2
    и т.д.
     
    Dim X as integer
     
    For X = 0 to intListCount
     
            If X=0 then
                ResultPrev=[полученное]
            end if
     
             CurrentResult = arрList(x) - [полученное]
     
             if CurrentResult = 0 then
                    [полученное] и есть наиболее близкое значение
               ElseIf CurrentResult < 0 then
                  If X>0 then
                           сравнить с ResultPrev и решить принимаем или нет и что именно принимаем
                  End If
     
              ElseIf CurrentResult > 0 then
     
              и т. д.
     
             End If
     
             'в любом случае:
              ResultPrev=[полученное]
     
    next x
    Таких внутрених ElseIf будет немного. Какие именно условия в ElseIf устроят сам найдешь Можно добавить еще один внутренний уровень IF Then и проверять насколько CurentResult точнее ResultPrev по отношению к arрList(x)

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 05:34 21-06-2009 | Исправлено: dneprcomp, 08:06 21-06-2009
    Legio



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Dim intListCount as integer  
    intListCount = ( ...


    Код:
    Const intListCount As Integer = ( ...

    =]
     

    Цитата:
    (сколько надо значений) -1

    Чай, не дотнеты, можно массив и как (1 To ...) объявить.
     

    Цитата:
    Таких внутрених ElseIf будет немного.

    А зачем они там вообще?
    Пробежать массив полностью; на каждой итерации проверять модуль разницы; индекс элемента, у которого он будет минимальным, отдать кому надо после пробега, нэ?

    Всего записей: 695 | Зарегистр. 01-08-2003 | Отправлено: 07:01 21-06-2009
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Legio

    Цитата:
    Чай, не дотнеты, можно массив и как (1 To ...) объявить
    А, собственно, зачем? Пусть лучше к стандартам приучается. Кроме того, в VB6 массивы все-таки с 0 начинаются.
    Цитата:
    Пробежать массив полностью
    Да наверное можно и так. Я же писал - prototype
    Цитата:
    индекс элемента, у которого он будет минимальным, отдать кому надо после пробега
    Примерно так if и действуют. А как без if сравнивать будем? А ну как предыдущее значение было ближе?
     

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 08:03 21-06-2009 | Исправлено: dneprcomp, 08:04 21-06-2009
    Legio



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Пусть лучше к стандартам приучается. Кроме того, в VB6 массивы все-таки с 0 начинаются.

    Option Base ещё никто не отменял
     

    Цитата:
    А, собственно, зачем?

    Понятнее. Меньше подробностей в голове держать => меньше путаницы в мыслях.

    Всего записей: 695 | Зарегистр. 01-08-2003 | Отправлено: 08:58 21-06-2009
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Visual Basic (VB).


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru