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

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

Автор: respite
Дата сообщения: 26.02.2006 12:12
Конечно, можно работать в лоб. Например, создать несколько вспомогательных массивов, в которых будут находиться расстояния между точек, затем перебирать несколько точек, у которых расстояние будет минимальным.... Наверно, не то.

А если зайти с другой стороны?
1. Находим границы области со всеми точками.
2. Разбиваем это пространство на N-ное количество частей с равной площадью, затем ищем ту часть, в которой точек будет больше.
3. Затем найденную часть разбиваем на следующие несколько частей.
4. Затем уже среди найденных точек выбираем три для треугольника.

NEOMATRIX
Сроки решения задачи когда заканчиваются?
Автор: NEOMATRIX
Дата сообщения: 04.03.2006 12:40
respite
Еще 4 дня.
Автор: alin
Дата сообщения: 13.03.2006 18:59
Подскажите, пожалуйста, можно ли в Excel-e операцию «ПОИСК РЕШЕНИЯ» оформить как макрос.

Добавлено:

Цитата:
Подскажите, пожалуйста, можно ли в Excel-e операцию «ПОИСК РЕШЕНИЯ» оформить как макрос.

Разобрался, вопрос снят!
Автор: Fanat Andrew
Дата сообщения: 14.03.2006 19:43
Помогите кто знает VB и матрицы, определители и всё такое.

Пример: Определители второго порядка.
Создана форма, на ней 5 textbox - 4 элемента матрицы (A, B, C, D) и 5-й соответственно сам определитель (E).
Методом простейших вычислений заставил считать и выводить ответ в 5 textbox.

Я хотел бы сделать так чтобы при нажать на кнопку, выводился весь ход решения в Word'е.
Например:
|A B|
det A=| |=A*D-B*C=AD-BC= E
| C D|

Насколько знаю, это надо делать через OLE.
Формулы набраны в Microsoft Equition 3.0.

Автор: Viital
Дата сообщения: 24.03.2006 19:52
Ребят нужна срочная помощь зделать одномерный массив в QBASIC, очень очень нужно помогите пожайлуста!!!
ЗАРАНИЕ ОЧЕНЬ БОЛЬШОЕ СПСИБО!!!
Вот задание:

7.1. Дан одномерный массив размерностью в K элементов. Найти количество элементов массива, попадающих в интервал [A ; B], вывести на экран все ненулевые элементы.
7.2. Дан одномерный массив Zn. Все элементы с нечетными значениями заменить на сумму элементов с четными номерами.
7.3. Даны два одномерных массива Xm и Yn. Сформировать новый массив Zn, состоящий из первых пяти положительных элементов массива Xm и последних пяти отрицательных элементов массива Yn. Отсортировать исходный массив Xm по возрастанию.

17.1. Дан одномерный массив размерностью в N элементов. Найти количество положительных элементов массива. Вывести на экран компьютера номера и значение всех элементов, содержащих дробную часть
17.2. Дан одномерный массив Ym. Заменить все отрицательные элементы с четными номерами на значение среднего арифметического элементов массива Ym.
17.3. Дан одномерный массив Zm. Сформировать массив Yn, состоящий из нечетных значений элементов массива Zm. Полученный массив отсортировать по возрастанию.
Автор: AlexS8m5Sa
Дата сообщения: 07.04.2006 21:44
В общем проблема у маня достаточно легко решаемая ( для тех, кто с VB знаком давно, а я с этим зверем столкнулся совсем недавно (VB 2005 Express Edition) ):
нужно чтобы при нажатии определённой кнопки, программка соединялась с сервером и отправляла ему данные ( оправлял запрос типа: _http://www.mysite.ru/index.php?u=038561957...001740034858692 )

как это можно реализовать?
и/или где об этом можно прочитать?
Автор: vasiliy74
Дата сообщения: 10.04.2006 10:47
Вопрос такой: как заставить Excel печать только чётные либо нечётные страницы, (для двусторонней печати на принтере без реверса)? Вопрос то уже был такой может я не туда пишу
Автор: sky4au
Дата сообщения: 17.04.2006 15:42
Приветик всем! Я учусь в 11 классе,срочно надо сдать работу по информатике.Задание такое:составить программу решения тригонометрических уравнений. Мы вводим правую часть уравнения(лэйбл sin x=...) и программа должна подсчитывать х по формуле х=arcsin(введенное число)+2Пn.У меня есть программка,ошибок не выдает,но и не выполняет ее.Пожалуйста,если не трудно,помогите написать,уже устала спрашивать у всех.
Имена полей и кнопок:
поле ввода числа - "P1"
поле целого числа - "P2"
кнопка вычисляй x - "B1"
поле ответа - "P3"

On Error GoTo Err_
Dim Pi As Double
Dim P1 As Integer
Dim P2 As Integer
Dim P3 As Integer
Pi = 3.14

If P1 > 1 Or P1 < -1 Then
P3 = "Решений нет"
Exit Sub
End If

If P1 = -1 Then
P3 = -Pi / 2 + 2 * P2 * Pi
Exit Sub
End If

If P1 = 1 Then
P3 = Pi / 2 + 2 * P2 * Pi
Exit Sub
End If

'P3 = Atn(P1 / Sqr(-P1 * P1 + 1)

Exit Sub
Err_:
P3 = Err.Description

Заранее спасибо
Автор: Troitsky
Дата сообщения: 17.04.2006 18:34
sky4au
Если в формулах не напутал то:
Код: Private Sub B1_Click()
Const Pi = 3.141592

Dim dblY As Double
Dim intN As Integer
Dim dblX As Double

dblY = CDbl(Val(P1.Text))
intN = CInt(Val(P2.Text))

If Abs(dblY) > 1 Then
MsgBox "Bla-bla-bla", vbExclamation
Exit Sub
ElseIf Abs(dblY) = 1 Then
dblX = dblY * Pi / 2 + 2 * Pi * intN
Else
dblX = ArcSin(dblY) + 2 * Pi * intN
End If

P3.Text = dblX
End Sub

Function ArcSin(X As Double)
ArcSin = Atn(X / Sqr(-X * X + 1))
End Function
Автор: sky4au
Дата сообщения: 17.04.2006 19:54
ошибки выводит....не знает,что такое Abs и Atn с Scr не читает,хотя раньше такого не было....
Автор: zoric
Дата сообщения: 17.04.2006 21:32
VBScript - разделитель целой и дробной части
Необходимо из XML считать параметр (формата #.#) и умножить его на 1.39
Получаю так

Код: x = Node.getAttribute("x")
Автор: dneprcomp
Дата сообщения: 17.04.2006 22:10
zoric
А почему использован именно CInt() ? Умножаем на десятичную дробь. Если приводим к Integer, то теряем точность. Надо использовать CDec()
Автор: Troitsky
Дата сообщения: 18.04.2006 08:37
zoric

Цитата:
CInt(х) не работает из-за точки

Не в точке дело. Если x - строка, то прежде чем функцию CInt применять, по идее нужно эту строку в число перевести:
Код: CInt(Val(x))
Автор: zoric
Дата сообщения: 18.04.2006 11:07

Цитата:
Надо использовать CDec()


Цитата:
Если x - строка, то прежде чем функцию CInt применять, по идее нужно эту строку в число перевести:
CInt(Val(x))


1. CDec тоже не работает
2. Val в VBScript НЕТ!
3. Я же и говорю - проблема в точке.

Код: CInt(1,987987) = 2
CInt(1.987987) = Несоответствие типа 'CInt'
Автор: Troitsky
Дата сообщения: 18.04.2006 19:27
zoric
Эта тема по типовым задачам на VB. Тема по VBScript тут. Ты же постил уже там, зачем сюда перешел?

Разделителем целой и дробной части является точка, а не запятая и в этом плане твой код
Код: CInt(1.987987) = Несоответствие типа 'CInt'
Автор: zoric
Дата сообщения: 19.04.2006 11:41

Цитата:
CInt(1.987987) = Несоответствие типа 'CInt'
работает нормально и без ошибок. Ошибки наоборот возникают когда запятая там фигурирует. Возможно вся соль в региональных настройках, может еще в чем.

Ну конечно в них. У меня (как и у большинства тех, кто будет использовать мой скрипт) - Россия. И ошибка вылазит как раз из-за точки.

Свою ф-ию я уже написал:

Код: Function Mult(x, y)
    x = Replace (x, ".", ",")
    x = CDbl(x)
    'x = x * y
    If x <> 0 Then
        x = FormatNumber ((x * y), 5, -2, -2, 0)
    End If
    x = CStr (x)
    Mult = Replace (x, ",", ".")
End Function
Автор: Troitsky
Дата сообщения: 19.04.2006 18:07
zoric

Цитата:
Ну конечно в них. У меня (как и у большинства тех, кто будет использовать мой скрипт) - Россия. И ошибка вылазит как раз из-за точки.

У меня тоже российские региональные настройки и в качестве разделителя целой и дробной части задана запятая, но от этого ничего не меняется - скрипт благополучно работает с точкой, но не с запятой.
Для чистоты эксперимента пробовал настройки менять - та же петрушка, скрипт в качестве десятичного разделителя понимает только точку.
Мне вообще кажется, что на программном уровне кроме точки ничего и быть не может, ведь запятая - это признак перечисления параметров функции.
Кстати, подобного рода и сообщение об ошибке выводится в случае использования запятой: "Недопустимое число аргументов...".

Добавлено:
Если у тебя смена региональных настроек делу помогает, можешь программно менять ключ реестра HKEY_CURRENT_USER\Control Panel\International\sDecimal, в котором прописан десятичный разделитель Windows.
Автор: zoric
Дата сообщения: 19.04.2006 19:34
Может дело в системе - у меня ХР
Автор: Troitsky
Дата сообщения: 20.04.2006 20:36
zoric

Цитата:
Может дело в системе - у меня ХР

У меня тоже WinXP SP2 русская.
Может от версии vbscript.dll зависит? У меня 5.6.0.8820. У тебя такая же? Хотя, не должно вроде бы...
Я даже не знаю. Поспрашивай в топике по VBScript, может там что подскажут.
Автор: ShIvADeSt
Дата сообщения: 21.04.2006 01:28
zoric

Цитата:
Но ИМХО должно быть какое-то другое решение проблемы. Прежде чем постить искал в сети "разделитель целой и дробной части" Сразу же нашёл несколько подобных тем. И везде - Replace.
Чёрти что. А если у юзера стоит En - засовывать в ф-ию проверку, какие там региональные настройки. Лезть в рееестр, только для того что-бы перемножить 2 числа.

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

Цитата:
Если у тебя смена региональных настроек делу помогает, можешь программно менять ключ реестра HKEY_CURRENT_USER\Control Panel\International\sDecimal, в котором прописан десятичный разделитель Windows.

зачем менять, его проще считать оттуда и в процедуре Replace вместо "," засунуть это значение, тогда даже если разделителем будет пробел, он все равно заменится на точку.
Автор: zoric
Дата сообщения: 21.04.2006 19:51

Цитата:
зачем менять, его проще считать оттуда и в процедуре Replace вместо "," засунуть это значение, тогда даже если разделителем будет пробел, он все равно заменится на точку.

А вот это мысль!
Но всё равно - я возмущён! Похоже на операцию на гландах.
Автор: Alex Dyler
Дата сообщения: 29.04.2006 09:50
Учусь на 1 курсе института, информатик задал задачу на зачет, которую нужно написать на VBA,
долго читал самоучитель ( информатик не дай бог никому) все что я понял это: сначала нужно задать
массив чисел, затем поставить перебор чисел от 100 до 110, поставить оператор условного перехода If_Else и вывести Input Box для ввода N, но беда никак
не могу собрать все в программу. Если кто знает помогите . Заранее безмерно благодарен за любую помощь. А вот собственно задача:

Дана матрица А с 2 столбцами и N строками. Считать, что элементы этой матрицы являются случайными целыми числами от 100*N до 110*N. Первый элемент каждой строки матрицы А представляет один из 10 эталонных размеров некоторого сложного изделия, а второй - фактический размер конкретного такого изделия. Начиная с первой строки , выводить абсолютные величины разностей эталонного и фактического размеров, заканчивая процесс, если абсолютныя величина разности превысила 0,01.
Автор: zelinski
Дата сообщения: 01.05.2006 06:07
Где можно скачать "Справку" для русифицированного VB 6.0? Как её установить? На VB 6.0 при изменении содержимого DriveListBox не изменяется содержимое DirListBox и в свою очередь при изменении содержимого DirListBox не изменяется содержимое
FileListBox. Что и куда надо добавить, чтобы содержимое FileListBox тут же изменялось при изменении содержимого DirListBox содержимое которого тут же изменялось при изменении содержимогоDirListBox? А вообще-то хотелось, чтобы все файлы с
расширениями "txt" и "doc" из FileListBox при нажатии CommandButton, копировались в определённую папку.
Автор: dneprcomp
Дата сообщения: 01.05.2006 06:33
zelinski
Используй свойство Path в событии _Change. Примеры:
dirList.Path = dirList.List(dirList.ListIndex)
dirList.Path = drvList.Drive
filList.Path = dirList.Path

для фильтровки можно использовать
filList.Pattern = "*.txt; *.doc"

Автор: hana
Дата сообщения: 10.05.2006 14:37
здраствуйте!!!
препод задал т...задачу,ничего н6е объясняя!!!даже не знаю как подойти!!помогите пожалуйста!!!на окружности раставлено 20 точек .за ход разрешается соединить любые 2-ве из них отрезком не перес6екающим отрезков, проведенных ранее, проигрывает тот кто не может сделать ход!
Автор: Koshta
Дата сообщения: 11.05.2006 17:34
Поможите безрукому.Задача элементарная, но не по мне.

На ветвление

Составить программу, которая для заданного числа X определяет, принадлежит ли X отрезку [A, B].

Пожалуйста.
Автор: Iceman82
Дата сообщения: 11.05.2006 23:52
Koshta
Например, можно так:

Цитата:

Dim A As Integer
Dim B As Integer
Dim X As Integer

A = CInt(TextBox1.Text)
B = CInt(TextBox2.Text)
X = CInt(TextBox3.Text)

If (X >= A) And (X <= B) Then
MsgBox("X принадлежит отрезку [A,B]")
Else
MsgBox("X НЕ принадлежит отрезку [A,B]")
End If

З.Ы. Но вообще, было бы не плохо, если бы ты сообщал, в каком виде должна быть конечная программа (да и для какой версии VB тоже)
Автор: Koshta
Дата сообщения: 12.05.2006 10:35
Спасибо!


Ну вот например вылазиет вопрос-введите число
потом введите A в промежутке от А до B
потом введите B в промежутке от А до B


если принадлежит то выскакиевае что мол пренадлежит.
VB кажись 6 с половиной
Автор: Iceman82
Дата сообщения: 12.05.2006 15:33
Koshta
Ну смотри, если тебе надо это сделать с графическим интерфейсом, то берешь форму, кидаешь на нее три TextBox'a, и какую нибудь кнопку (Command) и в обработчике события нажатия на эту кнопку пишешь то, что я уже писал выше.
А если тебе все-таки надо, чтобы это работало в консоли в диалоговом режиме, тогда код должен быть примерно следующим (например):

Цитата:

Module Module1
Sub Main()
Dim A As Integer, B As Integer, X As Integer

Console.Write("Введите число X: ")
X = Console.ReadLine()
Console.Write("Введите начало отрезка A: ")
A = Console.ReadLine()
Console.Write("Введите конец отрезка B: ")
B = Console.ReadLine()

If (X >= A) And (X <= B) Then
MsgBox(X & " принадлежит отрезку [" & A & "," & B & "]")
Else
MsgBox(X & " НЕ принадлежит отрезку [" & A & "," & B & "]")
End If
End Sub
End Module

Правда, я работаю с VB.NET, поэтому функции ввода-вывода (Console.ReadLine и Console.Write) у тебя могут и не работать, но ведь в этой программе это и не так важно, правда?

З.Ы. Если честно, я просто не знаю, как работает ввод-вывод в консоли в VB6.
Автор: Koshta
Дата сообщения: 12.05.2006 16:18
Iceman82


Благодарю!!

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

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


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