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

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

Автор: AndVGri
Дата сообщения: 16.05.2007 11:16
lapulechka
А ты повтори для
Цитата:
Text2.Text

такой же цикл как и для

Цитата:
Text1.Text = Text1.Text + Str(a(i)) + ""

Только новые значения a(i) не считай
Автор: ItsJustMe
Дата сообщения: 16.05.2007 15:53
Вас когда-нибудь просили написать прогу через "третьи руки"? Т.е. чел 1 попросил чела 2, чел 2 - чела 3, чел 3 - меня.
Задачка такая:
нужно написать программу и блок схему "вычисления суммы всех чисел кратных 3" на visuаl bаsiс...
Моих способностей не хватает, чтобы понять это условие. Поэтому пишу сюда.
Автор: Legio
Дата сообщения: 16.05.2007 17:26
ItsJustMe
Бесконечность это будет Тут даже считать не надо... Или уточняйте чего надоть.
Автор: ItsJustMe
Дата сообщения: 16.05.2007 17:57
Собственно я ответил челу 3, что это будет 0 (ибо я в понятие "всех" включил еще и отрицательные числа). На что он мне написал следующее "блин, ему прога нужна".
Автор: Troitsky
Дата сообщения: 16.05.2007 21:00
ItsJustMe

Цитата:
Собственно я ответил челу 3, что это будет 0 (ибо я в понятие "всех" включил еще и отрицательные числа). На что он мне написал следующее "блин, ему прога нужна".


Код: MsgBox "0", vbOKOnly, "Расчет окончен"
Автор: lapulechka
Дата сообщения: 19.05.2007 12:11
Ребят, я запуталась. По-моему неправильно считается.

Составить процедуру и функцию для вычисления:

Y = 1+ + + …

принимая, что аргумент Х по модулю меньше единицы. Вычисления проводить до тех пор, пока модуль разности между очередным слагаемым и его предыдущим значением больше малой заданной величины, рассматриваемой в качестве точности вычислений.
Полученные подпрограммы записать в модуль. Используя подпрограммы модуля, вывести на экран с заданной точностью таблицу значений Y для аргумента Х от его заданного начального значения до заданного конечного значения с заданным шагом.


Private Sub Form_Load()
Label1 = " Составить процедуру и функцию для вычисления:" & vbCrLf & _
"Y = 1 + 2/x + 2*3/x^2 + 2*3*2/x^3 + 2*3*2*3/x^4 + ... ," & vbCrLf & _
"принимая, что аргумент X по модулю меньше единицы. Вычисления проводить до тех пор, пока модуль " & vbCrLf & _
"разности между очередным слагаемым и его предыдущим значением больше за-данной величины, " & vbCrLf & _
"рассматриваемой в качестве точности вычислений." & vbCrLf & _
" Полученные подпрограммы записать в модуль. Используя подпрограммы модуля, вывести с заданной " & vbCrLf & _
"точностью таблицу значений Y для аргумента X от его заданного начального значения до заданного " & vbCrLf & _
"конечного значения с заданным шагом изменения."
End Sub
Public Sub p(ByVal x!, ByVal eps#, ByRef sum#)
Dim pred#, posl#
Dim ch%, sum_sk_ch%, sk_ch%
Dim zn%, sum_sk_zn%, sk_zn%
Dim z%, kf!

ch = 1
zn = 2: sum_sk_zn = 31: sk_zn = 4
z = 1: sum = 1 + x / 2
pred = 1: posl = x / 2
Do While Abs(Abs(pred) - Abs(posl)) > eps
sk_zn = sum_sk_zn - sk_zn: zn = zn + sk_zn
kf = ch / zn
pred = posl
posl = pred * z * kf * x
sum = sum + posl
Loop
End Sub

Public Function f(ByVal x!, ByVal eps#) As Double
Dim pred#, posl#, sum#
Dim ch%, sum_sk_ch%, sk_ch%
Dim zn%, sum_sk_zn%, sk_zn%
Dim z%, kf!
ch = 1
zn = 2: sum_sk_zn = 31: sk_zn = 4
z = 1: sum = 1 + x / 2
pred = 1: posl = x / 2
Do While Abs(Abs(pred) - Abs(posl)) > eps
sk_zn = sum_sk_zn - sk_zn: zn = zn + sk_zn
kf = ch / zn
pred = posl
posl = pred * z * kf * x
sum = sum + posl
Loop
f = sum
End Function
Private Sub Command1_Click()
Dim x As Single, y As Double
Dim xn As Single, dx As Single, xk As Single
Dim eps As Double, b As Boolean, s As String
Dim g As Double, i As Byte, j As Byte

xn = Val(InputBox("Введите начальное значение x"))
Label3.Caption = "Начальное значение x = " & xn

dx = Val(InputBox("Введите шаг по x"))
Label4.Caption = "Шаг по x = " & dx

xk = Val(InputBox("Введите конечное значение x"))
Label5.Caption = "Конечное значение x = " & xk

eps = Val(InputBox("Введите точность вычисления"))
Label6.Caption = "Точность вычислений = " & eps

'Выбор средства вычислений: с помощью процедуры или функции

If Combo1.Text = "Процедура" Then
b = True
Else
b = False
End If

'Вычисление значения суммы ряда для заданного интервала значений x.

List1.Clear
x = xn
Do While x < xk + 0.5 * dx
If b Then
Call p(x, eps, y)
Else
y = f(x, eps)
End If

' Вывод результатов вычисления суммы ряда с заданной точностью

g = eps: j = 0
Do While g < 1
g = g * 10
j = j + 1
Loop
s = "#0."
For i = 1 To j
s = s & "0"
Next i
List1.AddItem " " & Format(x, "0.00") & Space(16) & Format(y, s)

' Переход к следующему значению x из заданного диапазона

x = x + dx
Loop
End Sub
Private Sub Command3_Click()
End
End Sub


Автор: NeverSmile
Дата сообщения: 22.05.2007 23:16
Очень срочно нужно решение этих двух задач!!!!!Пожалуйста помогите!!!!!!!!!!!! я в этом ничего не понимаю, а экзамен сдавать нужно....Сделайте плиз эти задачки,если не сложно и + напишите какие перед этим надо сделать кнопки на формах в бейсике.Заранее спасибо!!!!!!!!
Задание 1

В среде Visual Basic создать приложение для решения
следующей задачи:
Сколько чисел нудно взять в последовательности
1 + 1/2 + 1/3 + 1/4 + ...,
чтобы получить число, большее 5?



Задание 2

Разработать приложение для решения задачи:
0, если Х<0
Дано число X.Вычислить Y= Х, если 0< или ровняется Х < или ровняется 1
Х в квадрате, если Х>1
Автор: sun888
Дата сообщения: 22.05.2007 23:26

Цитата:
NeverSmile

Задание2
x=val(text1.text)
if x<0 then y=0
if ((x>=0) and (x<=1)) then y=x
if x>1 then y=x*x
text2 = y

Добавлено:
задание1
sum=0
max=val(text1.text)
sch=0
while sum<max
sch=sch+1
sum=sum+1/sch
wend
text2 = sch

Автор: eika
Дата сообщения: 24.05.2007 16:40
Господа-товарищи!

Прошу помощи.

Есть скрипт на VBS для FTP-сервера. Он выводит список последних загруженных файлов за XX часов.

Мне нужно его немного переделать, а именно:

1. Сделать так, чтобы список выводился безотносительно времени, т.е. просто XX последних файлов.
2. Сделать сортировку по дате загрузки файлов - первый - вверху, последний - внизу (сейчас они не понятно по какому признаку отсортированы; похоже, что вообще хаотично).

Задача детская, но я ничего в VNS не понимаю! Мне проще в чужом PHP-проекте разобраться, чем в 200 строках кода на VBS.

Скачать скрипт: http://webfile.ru/1418466
Автор: NeverSmile
Дата сообщения: 24.05.2007 18:00


Добавлено:
sun888,слуш, напиши плиз какие кнопки перед этим нада ставить, а то я не могу сделать эти задачи, пока кнопки не поставлю!!!
Автор: Shaa
Дата сообщения: 24.05.2007 19:09
подскажите как управлять правами

в конкретике задача следующая,
есть список сайтов (грубо говоря папки). необходимо в каждой конкретной папке (задан список) добавить конкретных юзеров (также задаются) и дать им конкретные права (Read Execute, Read Execute Modify).
т.е. допустим папка А, если есть в неё добавляется юзер А1, в папку А2 если есть юзер А1 и А2... ну это уже лирика.
Далее разрешить наследование и принудительно заменить права всем чайлдам текущими правами (2 галочки в Advanced Options)

Интересует как это автоматизировать, опыта с VB совсем нет, но что-то мне подсказывает что в cmd это сделать нереально
Автор: AndVGri
Дата сообщения: 25.05.2007 02:34
eika
Со всем помочь не смогу. Он у тебя, похоже, в составе ещё чего-то работает, да и времени особо разбираться нет, тем более сортировку писать. Так что, на скорую руку, будем сохранять log по "D:\!FTPLOGS\UploadLatest\Upload.txt"
Очисти его один раз для записи модифицированных данных
1. в Function Parser() закомментируй вызов DeleteFile, CreateFile (удаляет и создаёт новый log);
2. в Function WriteUploadLog(File) измени
Line = File.Name & Chr(9) & File.Size на
Line = File.Name & Chr(9) & File.Size & Chr(9) & File.DateCreated & Chr(9) & File.DateLastModified

Всё - теперь у тебя в Log будут накапливаться данные. Открываешь в любом табличном процессоре и сортируешь по датам.
Да, раздел по VB Script здесь
И вопрос, а в чём проблема реализовать это хозяйство на PHP?



Добавлено:
Shaa
Раздел по VB Script здесь
Скачай себе vbsedit, там примеров по AD полно, да и MSDN с WMI не забывай
Автор: eika
Дата сообщения: 25.05.2007 11:33
AndVGri


Цитата:
Всё - теперь у тебя в Log будут накапливаться данные.

Не. Мне не надо, чтобы он просто накапливал. Надо, чтобы он в этом списке выводил xx последних файлов. Т.е. таймер на 24 часа нужно отключить, и сделать счетчик на, скажем, 20 последних файлов. Все что было до этих 20 - стирать. Именно поэтому автор исходного скрипта (не я, конечно) делает ротацию лога через delete/create.

Цитата:
Открываешь в любом табличном процессоре и сортируешь по датам.

В том-то и дело, что это автоматизированная система, которая постоянно живет. Это не единичный результат работы, который можно потом процессить руками. Нужно чтобы все само "автоматом" бегало.

Цитата:
Да, раздел по VB Script здесь

VB и VBS - разные вещи?

Цитата:
И вопрос, а в чём проблема реализовать это хозяйство на PHP?

Скрипт работает под готовый софт с готовым API.

P.S.
Спасибо за попытку помочь!
Автор: AndVGri
Дата сообщения: 25.05.2007 12:56
eika
И всё-таки в чём проблема написать на PHP? Твой API вызывает следующие процедуры

Код:
Sub OnClientLoggedIn()
Call PlayFile("ClientLoggedIn")
End Sub

Sub OnSiteLatestUpload(param)
Call PlayFile("Site")
End Sub

Sub OnClientDisconnected()
Call Parser()
End Sub

'Domain Functions
Sub OnEveryDay()
Call Parser()
End Sub
Автор: eika
Дата сообщения: 25.05.2007 14:15
Спасибо.

Вызывать из софта VBS, потом оттуда PHP? Зачем такой огород городить, если есть VBS и он позволяет все это сделать? Да и нет на этой машине PHP (не нужен он там).

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

P.S.
Да, между Java / JS разницу понимаю!
Автор: Shaa
Дата сообщения: 25.05.2007 22:21
AndVGri
спасибо за совет, скачаю гляну, с вопросаим пойду в тот раздел
совсем забыл что VB и VBS разные вещи
Автор: lapulechka
Дата сообщения: 26.05.2007 19:54
Народ! У меня тут такая заморочка
Обработка файлов данных.
Исходные данные о предприятиях: код, название, год начала реконструкции (не ранее 1995г., число лет реконструкции не более пяти), год окончания реконструкции (не позже 2005 г.), планируемые затраты на каждый год реконструкции. Число предприятий не определено. Записать данные в файл. Используя данные в файле, найти общие планируемые затраты на реконструкцию за заданный год.


«найти общие планируемые затраты на реконструкцию за заданный год.» - вот что меня напрягает. Мне надо, чтобы это действовало так:
Командная кнопка решить
1)    через Text1 вводится год (от 1995 до 2005)
2)    Командная кнопка «решить»
3)    выдаётся таблица MSFlexGird, где появляются: шапки колонок – года (1995 до 2005), содержание колонок – планируемые затраты за данный год по всем предприятиям.
4)    В Text2 появляются общие планируемые затраты на реконструкцию за заданный год.
Вот, что у меня уже есть:
Private Type prod
kod As String * 3
name As String * 10
nachalo As String * 4
konec As String * 4
pl(1 To 5) As Single

End Type

Private pr As predp, x As predp, y As predp
Private kolzap%, n_rec%, b As Boolean

Private Sub Vvod_Click()
Text1.Visible = False
Open CurDir$ & "\predpr.dat" For Random As #1 Len = Len(pr)
Do
pr.kod = InputBox("Введите код предприятия")
pr.name = InputBox("Введите название предприятия")
pr.nachalo = InputBox("Введите год начала реконструкции (не ранее 1995г., число лет реконструкции не более пяти)")
pr.konec = InputBox("Введите год окончания реконструкции (не позже 2005 г.)")
For i = 1 To 5
pr.pl(i) = InputBox("Введите планируемые затраты на каждый год реконструкции " & i & " год")
Next i

Put #1, , pr
Loop Until MsgBox("Продолжить ввод данных ?", 36) = vbNo
Close #1
End Sub

Private Sub prosmotr_Click()
Dim i%, j%
Text1.Visible = False
Open CurDir$ & "\predpr.dat" For Random As #1 Len = Len(pr)
kolzap = LOF(1) \ Len(pr)
fg.Cols = 13: fg.Rows = 16
For i = 0 To 12
fg.ColWidth(i) = fg.Width / 13
Next i
fg.Clear
fg.FormatString = "^ № р/р |^ Код |< Наименование |^ PL1 |^ PL2 |^ PL3 " & _
"|^ PL4 |^ PL5 |^ Начало реконструкции |^ Конец реконструкции "
For i = 1 To kolzap
Get #1, , pr
fg.TextMatrix(i, 0) = i
fg.TextMatrix(i, 1) = pr.kod
fg.TextMatrix(i, 2) = pr.name

For j = 1 To 5
fg.TextMatrix(i, j + 2) = pr.pl(j)
fg.TextMatrix(i, j + 5) = pr.nachalo
fg.TextMatrix(i, j + 7) = pr.konec
Next j
Next i

Close #1

End Sub
Автор: AndVGri
Дата сообщения: 27.05.2007 02:57
lapulechka
А зачем у тебя избыточные условия? Если известен го начала реконструкции и её продолжительность, то последний год вычисляется как сумма. Если известны годы начала и конца реконструкции, то продолжительность то ж вычисляется, как разность конца и начала.
Что, трудно форму написать для ввода данных по предприятию? Зачем над пользователем издеваться, используя InputBox?
А по существу вопроса, сформулирован он у тебя, как бы это помягче... Проходишь под данным таблицы. Если год расчёта лежит в диапазоне начала/конца реконструкции, то вычисляешь смещение на требуемый год и добавляешь к переменной сумматору результата значение затрат на реконструкцию на данный год.
Автор: lapulechka
Дата сообщения: 27.05.2007 09:43
надо считать не от начала реконструкции до конца, а за определённый год по всем предприятиям.
Автор: AndVGri
Дата сообщения: 27.05.2007 09:55
lapulechka
читай внимательнее

Цитата:
вычисляешь смещение на требуемый год

[more]
Здесь у тебя ошибка

Цитата:

For i = 1 To kolzap
Get #1, , pr
fg.TextMatrix(i, 0) = i
fg.TextMatrix(i, 1) = pr.kod
fg.TextMatrix(i, 2) = pr.name

For j = 1 To 5
fg.TextMatrix(i, j + 2) = pr.pl(j)
fg.TextMatrix(i, j + 5) = pr.nachalo
fg.TextMatrix(i, j + 7) = pr.konec
Next j
Next i

Должно быть

Код:
fg.TextMatrix(i, 3) = pr.nachalo
fg.TextMatrxi(i, 4) = pr.konec
For j = 1 To 5
fg.TextMatrix(i, j + 4) = pr.pl(j)
Next j
Автор: lapulechka
Дата сообщения: 27.05.2007 15:31
ну, у меня такая штука получилась, но не считает ничего

Private Sub reshenie_Click()
Dim Mas%(), i%, j%
Dim needYear As Integer, iMoney As Currency
Open CurDir$ & "\predpr.dat" For Random As #1 Len = Len(pr)
kolzap = LOF(1) \ Len(pr)
fg.Clear
fg.Cols = 13: fg.Rows = 16

For i = 1 To kolzap
Get #1, , pr

pr.needYear = InputBox("Введите год")

If (needYear >= pr.nachalo) And (pr.needYear <= pr.konec) Then
iMoney = CCur(fg.TextMatrix(i, needYear - pr.nachalo + 5))
CountMoney = Val(CountMoney) + iMoney
End If

fg.TextMatrix(i, 0) = pr.name
Next i
Seek #1, i
Get #1, , pr

Text2.Text = Val(CountMoney)

Close #1

End Sub
Автор: AndVGri
Дата сообщения: 27.05.2007 15:37
lapulechka

Цитата:
pr.needYear = InputBox("Введите год")

If (needYear >= pr.nachalo) And (pr.needYear <= pr.konec) Then

Ну, pr.needYear проинициализирован, а needYear = 0 то есть, первая часть условия не выполняется. Да, и какого типа у тебя года?
Автор: lapulechka
Дата сообщения: 27.05.2007 15:49
Вот типы:

Private Type prod
kod As String * 3
name As String * 10
nachalo As String * 4
konec As String * 4
needYear As String * 4
pl(1 To 5) As Single


End Type

Private pr As prod, x As prod, y As prod
Private kolzap%, n_rec%, b As Boolean

это
Цитата:
If (needYear >= pr.nachalo) And (pr.needYear <= pr.konec) Then

заменила на If (pr.needYear >= pr.nachalo) And (pr.needYear <= pr.konec) Then

выдаёт ошибку на iMoney = CCur(fg.TextMatrix(i, pr.needYear - pr.nachalo + 5)) - Несовпадение типов.
Автор: AndVGri
Дата сообщения: 27.05.2007 15:55
lapulechka
Извини, не досмотрел, предполагал, что для денег используется тип денежный. Так что, убери приведение CCur, а iMoney и CountMoney определи как Single
Автор: lapulechka
Дата сообщения: 27.05.2007 16:51
Знаешь, он всё равно несовпадение типов выдаёт
Ты не думаешь, что может быть надо pr.pl задействовать?

Или подставить в типовую задачку:


[more] Исходные данные о продукции: шифр, наименование, план выпуска по годам
пятилетия, выполнение плана в процентах за каждый год пятилетия. Число видов
продукции не определено. Записать данные в файл. Используя данные в файле,
найти продукцию с максимальным процентом выполнения по ней пятилетнего
плана.
Private Sub mnuVvod_Click()
Open CurDir$ & "\produkt.dat" For Random As #1 Len = Len(pr)
Do
pr.shifr = InputBox("Введите шифр продукции")
pr.name = InputBox("Введите название продукции")
For i = 1 To 5
pr.pl(i) = InputBox("Введите план за " & i & " год")
Next i
For i = 1 To 5
pr.vp(i) = InputBox("Введите выполнение плана в % за " & i & " год")
Next i
Put #1, , pr
Loop Until MsgBox("Продолжить ввод данных ?", 36) = vbNo
Close #1
End Sub

Процедура решения задачи:

Private Sub mnuObrab_Click()
Dim Mas!(), max!, sv!, sp!, i%, j%, M!(5)
Open CurDir$ & "\produkt.dat" For Random As #1 Len = Len(pr)
kolzap = LOF(1) \ Len(pr)
ReDim Mas(1 To kolzap)
fg.Clear: Text1.Text = ""
fg.Cols = 13: fg.Rows = 16
sv = 0: sp = 0
For i = 1 To kolzap
Get #1, , pr
For j = 1 To 5
M(j) = pr.vp(j) * pr.pl(j) / 100
sv = sv + M(j)
sp = sp + pr.pl(j)
Next j
Mas(i) = sv / sp
fg.TextMatrix(i, 0) = pr.name
fg.TextMatrix(i, 1) = Mas(i)
Next i

max = Mas(1): j = 1
For i = 2 To kolzap
If Mas(i) > max Then
max = Mas(i)
j = i
End If
Next i
Seek #1, j
Get #1, , pr
Text1.Text = " Продукция с макс. процентом выполнения плана за 5 лет: " & _
pr.name & vbCrLf & _
" Ее процент выполнения плана за 5 лет = " & Format(max, "Percent")
Close #1
End Sub
Процедура просмотра хранящихся в файле данных:

Private Sub mnuView_Click()
Dim i%, j%
Open CurDir$ & "\produkt.dat" For Random As #1 Len = Len(pr)
kolzap = LOF(1) \ Len(pr)
fg.Cols = 13: fg.Rows = 16
For i = 0 To 12
fg.ColWidth(i) = fg.Width / 13
Next i
fg.Clear
fg.FormatString = "^ № р/р |^ Шифр |< Наименование |^ PL1 |^ PL2 “ & _
“|^ PL3 |^ PL4 |^ PL5 |^ VP!% |^ VP2% |^ VP3% |^ VP4% |^ VP5% "
For i = 1 To kolzap
Get #1, , pr
fg.TextMatrix(i, 0) = i
fg.TextMatrix(i, 1) = pr.shifr
fg.TextMatrix(i, 2) = pr.name
For j = 1 To 5
fg.TextMatrix(i, j + 2) = pr.pl(j)
fg.TextMatrix(i, j + 7) = pr.vp(j)
Next j
Next i
Close #1
End Sub
[/more]
Автор: AndVGri
Дата сообщения: 27.05.2007 18:09
lapulechka
Подводя итоги
[more]

Код:
Private Type prod
kod As String * 3
name As String * 10
nachalo As String * 4
konec As String * 4
needYear As String * 4
pl(1 To 5) As Single
End Type
Автор: lapulechka
Дата сообщения: 27.05.2007 18:47
Спасибо, мой хороший! Что бы я без тебя делала! Наверное, очень долго бы тупила. Спасибо, что столько своего времени на меня потратил! Щас займусь оформлением всего этого - это я хорошо умею!
Автор: TyMc
Дата сообщения: 30.05.2007 21:48
Задача такая: Зашифровать текст по правилу: слова, которые встречаются в тексте более двух раз, закодировать их; текст сжать, заменяя слова кодами. Составить таблицу кодов.

кто может пожайлуста напишите прогу для нахождения одинаковых слов

Автор: AndVGri
Дата сообщения: 31.05.2007 04:04
TyMc
Используй Dictionary Ключами будут уникальные значения слов, а значениями, количество повторов уникальных значений.
Автор: TyMc
Дата сообщения: 31.05.2007 05:21
Dictionary Ключи, это компонент VB? если , то где находится?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

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


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