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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    lapulechka

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

    Я тут ещё содной штучкой зависла:    Обработка числовой последовательности с заданным количеством элементов.В числовую переменную последовательно вводятся N натуральных k-значных чисел. Найти сумму цифр каждого числа последовательности.
     
    Я решила так:
    Private Sub Command1_Click()
    Dim N As Integer, i As Integer
    Dim a As Single
    Dim c As Single
     
    Dim P As String, K As String
    Text1.Text = "": Text2.Text = ""
    P = InputBox("Сколько чисел?", "Количество чисел")
    N = Val(P)
    a = 0
    For i = 1 To N
    K = InputBox("Введите" + Str(i) + "число и нажмите кнопку <OK>", "Ввод очередного числа")
    Text1.Text = Text1.Text + K + Chr(13) + Chr(10)
    a = a + Val(K)
    Next i
    c = Val(Text1.Text)
    tisach = c \ 1000
    sotni = (c - tisach * 1000) \ 100
    des = (c - (tisach * 1000 + sotni * 100)) \ 10
    ed = c Mod 10
    a = tisach + sotni + des + ed
    Text2.Text = a
    End Sub
     
     
    Тока вот последовательность не получается, знаю только, что Лист Бокс применить надо и Rnd . Что я только с ними не делала!

    Всего записей: 20 | Зарегистр. 26-03-2007 | Отправлено: 23:37 08-04-2007
    Legio



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

    Цитата:
    знаю только, что Лист Бокс применить надо и Rnd . Что я только с ними не делала!

    Назачем?
     

    Цитата:
    Тока вот последовательность не получается

    Собственно сумма цифр натурального числа на ура считается как-нибудь вот так:

    Код:
    Function countSum(ByVal tN As Long) As Integer
        Dim i As Integer, tRes As Integer
         
        If tN < 0 Then tN = -tN
         
        tRes = 0
         
        Do While (tN \ 10) > 0
             
            tRes = tRes + tN Mod 10
            tN = tN \ 10
         
        Loop
         
        tRes = tRes + tN
         
        countSum = tRes
     
    End Function

     
    Дальше, по пунктам.

    Цитата:
    N = Val(P)

    Val() обрабатывает не совсем то, что нужно обрабатывать. Лучше использовать какой-нибудь CInt()
     

    Цитата:
    For i = 1 To N  
    K = InputBox("Введите" + Str(i) + "число и нажмите кнопку <OK>", "Ввод очередного числа")  
    Text1.Text = Text1.Text + K + Chr(13) + Chr(10)  
    a = a + Val(K)  
    Next i

    Зачем здесь "а"?
    +отсутствует по факту контроль ввода. Что чревато, особенно с учётом того, что "с" объявлено как Single, который не есть целочисленный тип данных
     

    Цитата:
    tisach = c \ 1000  
    sotni = (c - tisach * 1000) \ 100  
    des = (c - (tisach * 1000 + sotni * 100)) \ 10  
    ed = c Mod 10  
    a = tisach + sotni + des + ed

    Оно будет считать только 4 разряда... Это если будет не меньше 4 разрядов... И если число попадётся не дробное (см. выше)

    Всего записей: 695 | Зарегистр. 01-08-2003 | Отправлено: 19:05 09-04-2007
    lapulechka

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Просто вся помощь препода заключилась в том , что он дал пример наподобие которого сделать надо свой вариант:
     
    Private Sub Image4_Click()
       Dim i%, j%, n%, k%, f As Boolean
        If Option2.Value Then
          Text1 = "": Text2 = ""
          Label1 = "Среди всех 4-значных натуральных чисел найти общее " & _
          "количество простых и значение наибольшего из них."
          Label5 = "Макс. простой:": Label6 = "Кол-во простых:"
          Label7 = "Простые числа:"
          Label7.Visible = True
          List1.Visible = True: List1.Clear
                k = 0
          For i = 1000 To 9999
            f = True
            For j = 2 To i \ 2
              If i Mod j = 0 Then f = False: Exit For
            Next j
            If f Then n = i: k = k + 1: List1.AddItem Str(n)
          Next i
          Text1 = Str(n): Text2 = Str(k)
        End If
    End Sub
    Private Sub Option2_Click()
       Image4.Picture = Image1.Picture
       End Sub
     
     
    Вот я и пытаюсь подогнать под свою.  
     
    А вот на этод код, ошибка выдаётся

    Цитата:
    Function countSum(ByVal tN As Long) As Integer  
        Dim i As Integer, tRes As Integer  
         
        If tN < 0 Then tN = -tN  
         
        tRes = 0  
         
        Do While (tN \ 10) > 0  
             
            tRes = tRes + tN Mod 10  
            tN = tN \ 10  
         
        Loop  
         
        tRes = tRes + tN  
         
        countSum = tRes  
     
    End Function  

     
    И где  в нём вообще i участвует?
       
     
     

    Всего записей: 20 | Зарегистр. 26-03-2007 | Отправлено: 21:15 09-04-2007
    Legio



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

    Цитата:
    И где  в нём вообще i участвует?

    А нигде не участвует. Забыл убрать
     

    Цитата:
    А вот на этод код, ошибка выдаётся

    Ошибка может выдаваться только в одном случае -- если в функцию передать текст
    (update: или если передать в неё число, вылезающее за границы типа Long... но это уже вопрос не к функции, а тому, кто её использует )

    Всего записей: 695 | Зарегистр. 01-08-2003 | Отправлено: 21:27 09-04-2007 | Исправлено: Legio, 22:24 09-04-2007
    DLysenko



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Господа, вроде разобрался с блитингом, возник вопроспо чтению данных из файла...
    В файле данные в таком формате
    1:1:0:0:20993:Ukrainian:32729:31749;1:1:0:0:2243:Zim:32807:31848;1:1:0:0:5546:Nikkiya:32774:31819;1:0:0:0:8648:SC1:32829:31826;
    определяем по порядку числа. (до каждого двоеточия, конец строки;)
    1 - изучена система или нет.
    2 - есть маяк или нет.
    3 - упускаем
    4 - упускаем
    5 - Номер звезды
    6 - Имя планеты
    7 и 8 координаты x и у.
    От пункта 1 и 2 зависит какая картинка будет выводиться. Номер звезды должен выводиться под рисунком.  
    Собственно вопрос - как правильно считать информацию из данного файла и как дальше работать с переменными. Так как в дальнейшем просто будет обработка того, что юзер нажимает на рисунке и у него открывается характеристики планеты.  
    Словом несовсем пойму как лучше сделать......
    Помогите плиз. Если можно с примером.

    Всего записей: 21 | Зарегистр. 19-03-2006 | Отправлено: 19:54 15-04-2007
    Legio



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    А чего бы и не через split()?

    Всего записей: 695 | Зарегистр. 01-08-2003 | Отправлено: 20:21 15-04-2007
    DLysenko



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Legio
    Если мона, покажи небольшой пример. Я просто не могу въехать.... Да, количество таких данных в файле изначально неизвестно. Их может быть и 10000....

    Всего записей: 21 | Зарегистр. 19-03-2006 | Отправлено: 21:51 15-04-2007
    Legio



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

    Цитата:
    Да, количество таких данных в файле изначально неизвестно. Их может быть и 10000....

    A variable-length string can contain up to approximately 2 billion (2^31) characters. ^__^
     
    dim tZzz() as String
    tZzz = split(tString,";")
     
    в результате в tZzz будет массив строк вида:
     
    "1:1:0:0:20993:Ukrainian:32729:31749"
    "1:1:0:0:2243:Zim:32807:31848"
    "1:1:0:0:5546:Nikkiya:32774:31819"
    "1:0:0:0:8648:SC1:32829:31826"
    +-последняя пустая строка
     
    с которыми потом можно обходиться схожим образом.
    Но должны, думаю, быть и более разумные способы.

    Всего записей: 695 | Зарегистр. 01-08-2003 | Отправлено: 22:46 15-04-2007
    KMelolika



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Добрый день, мальчики!
     
    Один мой знакомый помог зарегистрироваться на вашем форуме, сказал, что только здесь мне смогут оказать помощь. Я получаю образование юриста, мне это всегда нравилось, естественные науки мне легко даются, вся беда в том, что среди основных предметов есть информатика... вначале было все понятно, но у нас поменялся преподаватель и теперь нас заставляет выполнить  контрольную работу для сдачи экзамена. Он так и сказал: «Мне не важно сможете ли вы объяснить сделанное, контрольная должна быть сделана»… Если не трудно, помогите пожалуйста! Со своей стороны обещаю оказать посильную помощь в правовых вопросах.
     
    1.    Прямая на плоскости задается уравнением ax+by+c=0, где a и b одновременно не равны нулю. Пусть F – файл, содержащий коэффициенты нескольких прямых. Найти все точки пересечения этих прямых. Результат поместить в другой файл.
    2.    Дан замкнутый многоугольник координатами своих вершин (выпуклость многоугольника необязательна). Найти окружность минимального диаметра, описанную вокруг этого многоугольника.
    3.    Дано действительное число А, многочлен Р(х) степени n. Получить многочлен P(x)*(А*х+В). Коэффициенты многочленов сохранять в динамических списках.
    4.    «Исправление ошибок». Пусть по некоторому каналу связи передается сообщение, имеющее вид последовательности нулей и единиц (или точек и тире). Из-за помех возможен ошибоч-ный прием некоторых сигналов: нуль может быть воспринят как единица и наоборот. Для повышения надежности передачи сообщений применяют мажорирование, когда каждый сигнал троируется (например 101 преобразуется в 111000111). При расшифровке три последовательные цифры заменяются той цифрой, которая среди этой тройки встречается по крайней мере дважды. Написать программу шифровки и расшифровки мажорированных сообщений.
    5.    Указать маршрут коня, начинающийся на заданном поле шахматной доски и заканчивающийся на другом. Никакое поле не должно встречаться в маршруте дважды. Найти самый короткий маршрут.

    Всего записей: 5 | Зарегистр. 16-04-2007 | Отправлено: 17:00 16-04-2007 | Исправлено: KMelolika, 17:07 16-04-2007
    DLysenko



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Legio
    Тогда последний вопрос, как сделать что бы переменные выбирались по типу например:
    переменная а до первого знака :
    Просто резать весь массив...хм, незнаю... я предполагаю время займет немеренно.
    Я смотрел то что ты предложил, мысль родилась такая что из одного массива сделать несколько. И соответственно просто каждой переменной в каждом массиве будут соответствовать определенные данные.

    Всего записей: 21 | Зарегистр. 19-03-2006 | Отправлено: 01:07 17-04-2007
    Legio



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    DLysenko
    Времени уйдёт немеряно -- если строка будет большая.
    До первого знака -- тоже можно, хотя и не очень понимаю, зачем это надо в данном случае... см. MSDN...
     
    Но должны же быть и какие-нибудь разумные способы

    Всего записей: 695 | Зарегистр. 01-08-2003 | Отправлено: 06:04 17-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KMelolika
    1.  
    Подробнее...
    2.
    Подробнее...
     
    3. Решается со списками аналогичными приёмами
    4. В каком виде передаётся сообщение в процедуру анализа, как строка или число?
    5. А вот тут, извиняюсь, лениво думать, да и в шахматах не силён

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 13:36 18-04-2007
    KMelolika



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AndVGri, большое вам спасибо!
    Честно говоря, абсолютно не понимаю что все это значит, но попробую передать ваше решение своему знакомому, может он что-то с этим сможет сделать. Даже то, что вы сделали для меня неоценимо, поскольку, я в этом вообще ничего не понимаю. Касательно вашего вопроса... к сожалению, задание нам выдали на листиках, где ничего кроме самого задания больше нет, т.е. я все задачи перепечатала дословно.

    Всего записей: 5 | Зарегистр. 16-04-2007 | Отправлено: 16:31 18-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KMelolika
    Со 2-ым заданием я, похоже, несколько упростил до радиуса как половины максимального расстояния между точками. требуется корректировка. Надо обмозговать.
    Вот 4 задание. С 3 неинтересно возиться. Может и на 3 балла хватит и этого
    Подробнее...

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 18:21 18-04-2007 | Исправлено: AndVGri, 19:49 18-04-2007
    KMelolika



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AndVGri, доброй ночи! Еще раз огромное вам спасибо! По поводу оценки ничего сказать не могу, у нового преподавателя никто еще не сдавал... буду надеяться, что не я одна такая. Конечно, когда он (преподаватель) давал установку на контрольную, он ясно дал понять, что контрольная должна быть сделана, а вот в каком объеме...

    Всего записей: 5 | Зарегистр. 16-04-2007 | Отправлено: 05:15 19-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KMelolika
    Вот исправил 2 задание. А то получился частный случай
    Подробнее...
     
    И, до кучи, 3 задание
    Подробнее...

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 11:45 19-04-2007
    KMelolika



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AndVGri, я просто счастлива!!! Спасибочки!!! Как и обещала, если вам что-то понадобится узнать из области права, буду рада оказать помощь, уж в этом я очень хорошо разбираюсь. Еще раз огромное мерси!  

    Всего записей: 5 | Зарегистр. 16-04-2007 | Отправлено: 13:29 19-04-2007
    lapulechka

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет! Это опять я, задачку прошлую решила с горем пополам.  
    А вот с этой пока не справилась:
     
    . Определить количество чисел, введенных за последним простым числом в  
      последовательности с неопределенным количеством элементов.
    Мне предложили сделать так:
     
    №3
    код:  
    Private Sub Команда1_Click()
    p = Текст1.Text + " "
    For I = 1 To Len(p)
    If Mid(p, I, 1) <> " " Then k = k + Mid(p, I, 1): GoTo 1
    a = Val(k): f = 0
    For j = 2 To a \ 2
    If a / j = a \ j Then f = 1: j = a \ 2
    Next
    If f = 1 Then m = I
    k = " "
     
    1: Next
    For I = m + 1 To Len(p)
    If Mid(p, I, 1) <> " " Then k = k + Mid(p, I, 1): GoTo 2
    o = o + 1: k = " "
    2: Next
    Метка1.Lable = o
    End Sub
     
    Метка1 ---в нее будет выдаваться кол-во за последним простым  
     
     
     
    Но у меня не получается с этим кодом. Тем более , что мне надо Rnd задействовать.  
    Должно действовать примерно так:  
    1)Жмешь на кнопку Комманд
    2) Появляется Input Box "Закончить ввод" (Да/Нет) С помощью Rnd появляются числа в List (причём числа и простые и сложные)
    3) После того как ввод чисел закончишь, в окошке Теxt должно появиться количество чисел введённых за последним простым числом.
    Rnd задаём как:
    N = Int(Rnd * 1000)
     
    Если у кого появится желание мне помочь, я буду счастлива, т.к. в помощи очень нуждаюсь.

    Всего записей: 20 | Зарегистр. 26-03-2007 | Отправлено: 21:58 19-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lapulechka
    Код который дали - полный ПЭ. If с Goto, а слабо было заменить <> на = и поставить End If по месту метки? Зачем так пошло прерывать цикл, воздействуя на его переменную, чем Exit For не устроил?
    Короче, тут набросок
    Подробнее...

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 11:37 20-04-2007
    lapulechka

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

    AndVGri
    да, код, который мне дали оставляет желать лучшего :smirk , я с ним билась как могла - но он тупой до невозможности. А вот твой работает отлично, как мне надо. Правда я тоже сним покапалась, но там в основном были мои глупые косяки. В общем Спасибо тебе, очень помог!

    Всего записей: 20 | Зарегистр. 26-03-2007 | Отправлено: 00:19 22-04-2007
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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