Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Задачи на Visual Basic (VB).

Автор: SAS888
Дата сообщения: 15.11.2007 11:08
Tanya3000
По-моему я понял проблему. Дело в том, что функция Application.Trim(...) корректно работает только в Excel VBA. Вы не указали для какого приложения Ваш VB. В общем виде Вашу задачу можно решить так:

Function Substring(Txt, Delimiter, n) As String
Dim x As Variant
x = Split(Txt, Delimiter)
If n > 0 And n - 1 <= UBound(x) Then
Substring = x(n - 1)
Else
Substring = ""
End If
End Function
Sub Num_word()
Dim MyText As String
Dim MyTrim As String
MyText = " aaa bbb ccc ddd eee " 'пусть это исходная строка
MyTrim = Trim(MyText)
For i = 1 To Len(MyTrim)
If Not (Mid(MyTrim, i, 1) = Chr(32) And Mid(MyTrim, i + 1, 1) = Chr(32)) Then Txt = Txt & Mid(MyTrim, i, 1)
Next i
Delimiter = " " 'разделитель
n = 4 'номер слова в предложении
MsgBox Substring(Txt, Delimiter, n) 'Substring - искомое слово
End Sub

Добавлено:
Tanya3000
Или так:
Sub Num_word()
Dim n As Integer
Dim i As Integer
Dim MyString As String
Dim AA As Variant
Dim BB As String
Dim CC As String
Dim DD As Variant
MyString = " aaa bbb ccc ddd eee fff " 'Пусть это исходная строка
n = 4 'Пусть это заданный номер слова в строке
AA = Split(MyString, " ")
For i = 0 To UBound(AA)
If AA(i) <> "" Then BB = BB & Chr(32) & AA(i)
Next i
CC = Trim(BB)
DD = Split(CC, " ")
If n > 0 And n <= UBound(DD) + 1 Then
Substring = DD(n - 1)
Else
Substring = ""
End If
MsgBox Substring 'искомое слово
End Sub
Автор: Tanya3000
Дата сообщения: 16.11.2007 09:41
Огромное, просто гигантнейшее спасибо!!!!! я вам так благодарна!!!!!
Автор: borodavolga
Дата сообщения: 21.11.2007 08:48
подскажите как можно интегрировать VBA со стандартной VBA IDE в приложение написанное на VB?
и вообще
как подцеплять, выполнять скрипты (python/ruby/vba (в идеале)) из vb c передачей туда параметров! и возвратом результатов (не через файлы), с синхронизацией выполнения и т.д.
Автор: AndVGri
Дата сообщения: 21.11.2007 11:15
borodavolga
Вот, например, описание интеграции VBA в VB - поиск поможет
Автор: borodavolga
Дата сообщения: 21.11.2007 12:00
AndVGri
Это очень старая статья-первод, проблема в отсутствии VBA 6.0 SDK 6.1 (наверное с этим в варезник, но думаю бесполезно), поэтому и спросил сразу про Python и Ruby. Даже без IDE, кто-нибудь знает как передавать параметры (объекты) в скрипты? (не генерить код, не создавать файлы). Создавать свой COM-сервер?
Автор: Zmejjj
Дата сообщения: 21.11.2007 15:51
Не знаю как решить задачу. В программировании я полный чайник и только начинаю работать с Visual Basic, поэтому если кто может, пожалуйста объясните как решать.
Задача:
Ассоциация художников провела выставку-продажу картин. В течение недели ежедневно выставлялось 24 картины. О каждом дне выставки известны названия картин и авторы. Только проданные в течение дня картины заменялись новыми. Получить перечень проданных картин.
Вот и всё.
Автор: mikeryrg
Дата сообщения: 25.11.2007 12:44
нужно посчитать такую штуку ci=(a*ci-1+b)mod m
где m=16777215
a, b, с меньше m но не на много
вроде в скобках получается число примерно 2^49 т.е. должно влезть в 64 битную переменную как я понимаю

ставлю переменные и дабл, и вариант, но и там, и там переполнение ((

такие числа вообще можно посчитать в вб?

Добавлено:
разобрался с проблемой
переполнение вызывал mod
реализовал mod вручную
Автор: AntiPro
Дата сообщения: 26.11.2007 17:09
Нужно написать програмку которая сможет эмулировать выход из Windows 2000, и после эмуляции выдаст окно с просьбой нажать ctrl+alt+shit по нажатию этих трех клавиш выходит окно для ввода пароля, логина и домена.
Автор: dneprcomp
Дата сообщения: 26.11.2007 20:52
AntiPro
Посмотри мой пост на http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=2299&start=80#lt
Автор: AntiPro
Дата сообщения: 27.11.2007 12:45
dneprcomp
Спасибо. нашел много интересного.
Автор: SunnyMary
Дата сообщения: 27.11.2007 17:48
Безумно нужна ваша помощь.Есть такое задание.Сделать скринсейвер с помощью таймера,если есть в picture box'е прямоугольник,который мы нарисовали.И есть круг с определёнными координатами(x,y),который меняет свои координаты и таким образом передвигается.А каждый раз,когда он ударяется о стенку нашего picture box'а или сторону прямоугольника,он отталкивается и движется в другом направлении и так постоянно.Надо учесть,что он может находится и внутри прямоугольника...тогда биться будет только о стороны прямоугольника,соответственно.
Помогите,чем сможете...
Спасибо
Автор: Les_PURE
Дата сообщения: 28.11.2007 01:38
Ребята привет всем...

Тут поднапрягли с лабораторными по ВБ....
Проблема в том что писать нада консольную прогу.
Сам я программирую на ПХП, времени очень не хватает разбирать ВБ.
СМогу скомпилировать и прокомментировать код самостоятельно ))))

ГУРУ, выручайте.... Для вас это елементарно

Вот задачи:

1)Сложение целых двуичных чисел

2)Определить максимальный елемент массива B(k), Bi < 0, K=<40. *(i - нижний индекс)

3)Дана квадратная матрица А размером Н на Н (Н=<10) из действительныйх чисел. Найти сумму елементов строки, в котором находится наибольший елемент.

4)Удалить из заданного текста пропуски и подсчитать длину получившесего текста

Спасибо всем кто поможет ))

Добавлено:
Забыл указать что нада на VB .NET, хотя предпологаю что разници 0 будет
Автор: Les_PURE
Дата сообщения: 29.11.2007 21:47
Ребятки, ну что, никто не может помочь???
Автор: Refery
Дата сообщения: 30.11.2007 15:32
borodavolga

Есть довольно интересная Технология WSC, возможно поможет

Что такое Windows Script Components?
Технология Windows Script Components (WSC) позволяет любой сценарий WSH "упаковать" в COM-объект (без компиляции исходного кода сценария!) и использовать его в любых приложениях, позволяющих подключать COM-объекты. Преимуществами компонентов-сценариев над обычными откомпилированными компонентами (как и вообще любой интерпретируемой программы над компилируемой) является простота разработки, внесения изменений и распространения объектов-сценариев, недостатками - более медленная скорость работы и возможность внесения несанкционированных изменений в исходный код компонентов.

http://admtech.mrsu.ru/whatis_5.html
Автор: Tyugan
Дата сообщения: 01.12.2007 08:36
Всем привет.
Тут встала такая проблема: нужно узнать, является ли сегодняшний день предпоследним рабочим днём месяца (ППРДМ)...

Логика мне видится следующая, но как реализовать, не представляю, поскольку в ВБ не разбираюсь



Какой месяц? => 30 или 31 день
Какой день недели последнее число месяца? =>

case понедельник => ППРДМ = 30 (31) - 3
case вторник-пятница => ППРДМ = 30 (31) - 1
case суббота => ППРДМ = 30 (31) - 2
case воскресенье => ППРДМ = 30 (31) - 3

if (сегодня == ППРДМ)
ну и там то, что мне нужно делать...
end if

Заранее спасибо
Автор: AndVGri
Дата сообщения: 01.12.2007 13:20
Tyugan
Для VB6
[more]
Public Function TodayIsLastWorkDay() As Boolean
Dim vMonth, vDay, vWeekday, vYear, vLastDay As Integer
Dim vDate As Date

vDate = Now()
vMonth = Month(vDate)
vDay = Day(vDate)
vYear = Year(vDate)
'Последний день месяца
Select Case vMonth
Case 1, 3, 5, 7, 8, 10, 12:
vLastDay = 31
Case 4, 6, 9, 11:
vLastDay = 30
Case 2:
'с этим может быть не совсем верно!?
If (vYear Mod 4) = 0 Then
vLastDay = 29
Else
vLastDay = 28
End If
End Select
vWeekday = Weekday(DateSerial(vYear, vMonth, vLastDay), vbMonday)
'Поправка в последний день месяца на субботу и воскресение
If vWeekday = 7 Then
vLastDay = vLastDay - 2
ElseIf vWeekday = 6 Then
vLastDay = vLastDay - 1
End If
If vDay = vLastDay Then
TodayIsLastWorkDay = True
Else
TodayIsLastWorkDay = False
End If
End Function
[/more]

VB.NET
[more]
Public Function TodayIsLastDayWork() As Boolean
Dim vDate As Date = Date.Today()
Dim vYear As Integer = vDate.Year
Dim vMonth As Integer = vDate.Month
Dim vLastDay As Integer = Date.DaysInMonth(vYear, vMonth)
Dim vLastDate As Date = DateSerial(vYear, vMonth, vLastDay)

Select Case vLastDate.DayOfWeek
Case DayOfWeek.Saturday
vLastDate = vLastDate.AddDays(-1.0R)
Case DayOfWeek.Sunday
vLastDate = vLastDate.AddDays(-2.0R)
End Select
If vDate.CompareTo(vLastDate) = 0I Then
Return True
Else
Return False
End If
End Function
[/more]
Автор: Rush
Дата сообщения: 01.12.2007 13:27
Ну можно примерно так...

Dim pprd%, wd%, dm%, arrMonth
arrMonth = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
If Month(Date) = 2 And Year(Date) Mod 4 = 0 Then dm = 29 Else dm = arrMonth(Month(Date) - 1)
wd = Weekday(DateSerial(Year(Date), Month(Date), dm), 3)
If wd < 5 Then pprd = arrMonth(Month(Date) - 1) - 1
If wd = 5 Then pprd = arrMonth(Month(Date) - 1) - 2
If wd > 5 Then pprd = arrMonth(Month(Date) - 1) - 3
If Day(Date) = pprd Then
.......
End If

Но ведь есть еще и праздники. А их к тому же принято переносить, если они выпали на выходные.

Добавлено:
Немного припоздал...
Автор: Les_PURE
Дата сообщения: 01.12.2007 14:29

Цитата:
Ребята привет всем...

Тут поднапрягли с лабораторными по ВБ....
Проблема в том что писать нада консольную прогу.
Сам я программирую на ПХП, времени очень не хватает разбирать ВБ.
СМогу скомпилировать и прокомментировать код самостоятельно ))))

ГУРУ, выручайте.... Для вас это елементарно

Вот задачи:

1)Сложение целых двуичных чисел

2)Определить максимальный елемент массива B(k), Bi < 0, K=<40. *(i - нижний индекс)

3)Дана квадратная матрица А размером Н на Н (Н=<10) из действительныйх чисел. Найти сумму елементов строки, в котором находится наибольший елемент.

4)Удалить из заданного текста пропуски и подсчитать длину получившесего текста

Спасибо всем кто поможет ))

Добавлено:
Забыл указать что нада на VB .NET, хотя предпологаю что разници 0 будет


РЕШЕНИЕ ПЕРВОЙ ЗАДАЧИ:

------------------------------------
Module Module1
Dim n1 As Long

Sub Main()
Console.WriteLine("Введите число 1 ")
n1 = Bin2Dec(Console.ReadLine)
Console.WriteLine("Введите число 2 ")
n1 = n1 + Bin2Dec(Console.ReadLine)
Console.WriteLine(ConvertToBinary(n1))
Console.ReadLine()
End Sub

Function Bin2Dec(ByVal BinString As String) As Long
Dim A As String
Dim DecW As Long
Dim i As Long
A = BinString
For i = 1 To Len(A)
DecW = DecW * 2
DecW = DecW + Val(Mid(A, i, 1))
Next i
Bin2Dec = DecW
End Function

Private Function ConvertToBinary(ByVal lngQuotient As Long) As String
Dim strBinary As String
Dim strReturn As String
Dim i As Integer
i = 100
Do
If Len(strBinary) = 100 Then Exit Do
strBinary = strBinary & "0"
Loop
Do While lngQuotient
Mid(strBinary, i, 1) = CStr(lngQuotient Mod 2)
lngQuotient = lngQuotient \ 2
i = i - 1
Loop
strReturn = Right(strBinary, 100 - i)
ConvertToBinary = strReturn
End Function

End Module
--------------------------------------------------------


Добавлено:
Rush
Может поможешь мне решить 2ю,3ю,4ую задачки???

Добавлено:
Решил сам, так как на руборде не дождешся....

2я задчка

Вторая задачка:
Код:
Module Module1
Dim B() As Long, K As Long, i As Long, max As Long

Sub Main()
Randomize()
Do
Console.WriteLine("Введите кол-во элеменов массива(0-40) - ")
K = CLng(Console.ReadLine)
If (K <= 40) And (K >= 0) Then
ReDim B(K)
Exit Do
End If
Loop
Console.WriteLine("Элементы массива:")
For i = 0 To UBound(B)
B(i) = Rnd() * 999
Console.WriteLine("Элемент[" & i & "]=" & B(i))
If B(i) > max Then max = B(i)
Next
Console.WriteLine("Максимальный элемент массива - " & max)
Console.ReadLine()
'Определить максимальный еле мент массива B(k), Bi < 0, K=<40. *(i - нижний индекс)
End Sub

3я задачка:

Module Module1
Dim A(,) As Long, N As Long, x As Long, y As Long, maxY As Long, max As Long, sum As Long

Sub Main()
Randomize()
Do
Console.WriteLine("Введите размер квадратной матрицы(0-10) - ")
N = CLng(Console.ReadLine)
If (N <= 10) And (N >= 0) Then
ReDim A(N, N)
Exit Do
End If
Loop
Console.WriteLine("Элементы матрицы:")
For y = 0 To N 'выбор строки
For x = 0 To N 'выбор элемента строки
A(x, y) = Rnd() * 999
If A(x, y) > max Then
max = A(x, y)
maxY = y
End If
Console.Write(" " & A(x, y))
Next
Console.WriteLine()
Next
For x = 0 To N
sum = sum + A(x, maxY)
Next
Console.WriteLine("Сумма элементов строки[" & maxY + 1 & "] = " & sum)
Console.ReadLine()
End Sub

End Module
End Module

Автор: gifin
Дата сообщения: 01.12.2007 22:00
будте добры подскажите как транслировать вот такое регулярное выражение ПХП

"!<a[^>]*\shref=[\"']?([^>\"'#\s]+)[\"']?[^>]*>!is"

для VB

требуется выдрать все ссылки со страницы

не пинайте, решение для VB не нашел, а мозги раскарячить для этих выражений никак не получается.

Автор: Les_PURE
Дата сообщения: 01.12.2007 22:38
gifin

Как транслировать думаю инфы куча, один из вариантов - это заменить каждый символ его кодом ASCII
Автор: Kaba4ok
Дата сообщения: 03.12.2007 15:37
Здравствуйте, помогите пожалуйста решить задачки. Если можно, то напишите текст программы.

1)Даны: Натуральное число n, действительные числа a0, a1,..., an. Вычислить последовательность а1+1!, а2+2!, an+n!.

2) Дана матрица натуральных чисел X(n,m). Упорядочить строки матрицы по возрастанию суммы цифр в десятичной системе счисления, используемых для записи элементов строки.
Автор: DIMICH
Дата сообщения: 03.12.2007 16:23


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

Задача №1
Решить систему ленейных уровнений
| A1X + B1Y + C1Z + D1 = 0
< A2X + B2Y + C2Z + D2 = 0
| A3X + B3Y + C3Z + D3 = 0


A1 = -1 A2 = 0 A3 = -0.5
B1 = 0 B2 = 1.5 B3 = 1
C1 = -1.79 C2 = 8.7 C3 = 3.5
D1 = 4.2 D2 = -2.25 D3 = 0.6


Задача №2
Решить систему ленейных уровнений
K1X1 + L1X2 + M1X3 + N1X4 + S1 = 0
K2X2 + L2X2 + M2X3 + N2X4 + S2 = 0
K3X3 + L3X3 + M3X3 + N3X4 + S3 = 0
K4X4 + L4X4 + M4X4 + N4X4 + S4 = 0


K1 = 0 K2 = 1 K3 = 2 K4 = 2
C1 = 8 C2 = 12 C3 = -1 C4 = 7
M1 = 4.2 M2 = 0 M3 = 2.5 M4 = -3
N1 = -4.2 N2 = 0.5 N3 = 0 N4 = 0
S1 = 0 S2 = -3.6 S3 = -5.5 S4 = 0


Задача №2
Решить систему ленейных уровнений
E1X + F1Y + G1Z + H1U + A1 = 0
E2X + F2Y + G2Z + H2U + A2 = 0
E3X + F3Y + G3Z + H3U + A3 = 0
E4X + F4Y + G4Z + H4U + A4 = 0


L1 = 4.5 L2 = 0 L3 = 6.5 L4 = -4.5
F1 = -4.7 F2 = -9.2 F3 = 8.1 F4 = 7.3
G1 = 0 G2 = -4.7 G3 = 0 G4 = 1.5
H1 = 2 H2 = -4 H3 = 0 H4 = 0
A1 = 0.9 A2 = -1.4 A3 = -6.5 A4 = 3

Если можно то напишите код задач

Зарание благодорю за помощь! Если чтото надо по дизайну обращайтесь
Автор: kalinakrasnay
Дата сообщения: 05.12.2007 19:21
упс...перепутала топик...
Автор: 5555555
Дата сообщения: 05.12.2007 19:27
kalinakrasnay

Цитата:
нужно чтоб вводились только цифры.

почти стандартная функция, к тому же - универсальная
Private Sub txtSum_KeyPress(KeyAscii As Integer)
KeyAscii = Only_Number(KeyAscii)
End Sub
Function Only_Number(theParam As Integer)
If InStr("1234567890" & Chr(8), Chr(theParam)) > 0 Then
Only_Number = theParam
Else
Only_Number = 0
End If
End Function

Цитата:
форма и вся ерунда находится в экселе, так что я точно по теме...

как раз не по теме, это в теме VBA

Добавлено:

Цитата:
упс...перепутала топик...

а я успел
Автор: kalinakrasnay
Дата сообщения: 06.12.2007 22:33
5555555
скоростной! спасибо за оперативность и помощь!!!!!!!!!!
Автор: lypky
Дата сообщения: 08.12.2007 02:43
Как на VBA написать программку. Что бы она брала слова (3-10 символов) из определенных ячеек - генерировали все возможные комбинации:
к примеру есть слова слово1, слово2, слово3:
на выходе что бы было:
1.) слово1слово2слово3
2.) слово2слово3слово1
3.) слово3слово2слово1
4.) слово2слово1слово3
5.) и т.д.

Ну и потом заносило их поочереди в строки сверху вниз...

Вот озадачили меня - а я в ВБА уже давно ничего не делал - поэтому смотрю щас на все это дело как баран на новые ворота...

Помогите кто чем может =)
Автор: AndVGri
Дата сообщения: 09.12.2007 15:11
lypky
Excel VBA тут
Но вариант (правда такое делается не на массивах, а на кольцевых списках на базе классов, думать лень, можешь переделать)
[more]

Код:
Private ItemArray() As String
Private LastID As Long
Private RowID As Long

Private Sub WriteResult()
Dim Result As String
Dim i As Long

Result = ""
For i = 1& To LastID
Result = Result & ItemArray(i)
Next i
RowID = RowID + 1&
Cells(RowID, 1&).Value = Result
End Sub

Private Sub Recursion(ByVal fromId As Long)
Dim k As Long, i As Long, movedItem As String
If fromId = LastID Then
WriteResult
Else
For k = fromId To LastID
Recursion fromId + 1&
movedItem = ItemArray(fromId)
For i = fromId + 1& To LastID
ItemArray(i - 1&) = ItemArray(i)
Next i
ItemArray(LastID) = movedItem
Next k
End If
End Sub
'Предполагается, что нужные для перестановки значения в первой строке
Public Sub Permutation()
Dim i As Long
LastID = ActiveSheet.UsedRange.Columns.Count
ReDim ItemArray(1& To LastID)
For i = 1& To LastID
ItemArray(i) = CStr(Cells(1&, i).Value)
Next i
RowID = 1&
Recursion (1&)
End Sub
Автор: bonya19
Дата сообщения: 10.12.2007 17:41

Как это делать? о_0
Автор: Diana Stereogum
Дата сообщения: 10.12.2007 20:58
Помогите решить задачу, пожалуйста!
В матрице размером 5*3 поменять местами строки с наибольшим и наименьшим номерами
Автор: a1dot0
Дата сообщения: 11.12.2007 02:14
Помогите, пожалуйста, с задачкой! Надо во время выполнения программы создавать компоненты Shape как в Design time, т.е. чтобы можно было мышкой растянуть до нужного размера, перетащить и закрасит в какой-нибудь цвет. Заранее спасибо.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

Предыдущая тема: для Hiper-six (индексы .nsx .smt) хоть что нибудь Опции


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.