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

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

Автор: z0q
Дата сообщения: 16.01.2006 10:59
Вообщем, необходимо следующее - у меня есть форма, два текстовіх поля (условно назовём txtInput & txtOutput)

Необходимо:

1. Вводишь в первое поле (txtInput) - список (любой), например список книг.
Типа:

Код:
Книга 1
Книга 2
Книга 3
Книга 4
Книга 5
Книга 6
Книга 7
Автор: dneprcomp
Дата сообщения: 16.01.2006 23:03
z0q
Как и обычно делают все , не объяснил в чем трудность. Сам то хоть пытался что-то сделать?
Автор: z0q
Дата сообщения: 18.01.2006 12:38
dneprcomp


Цитата:
Сам то хоть пытался что-то сделать?


если бы не пытался, наверное бы не спрашивал, верно?
Автор: dneprcomp
Дата сообщения: 19.01.2006 00:10
z0q
Так выложи, что сделал. Укажи место, которое не выходит. Задай конкретные вопросы, что бы прояснить непонятное тебе. Как мы можем знать что подсказывать, если нет информации? В чем конкретно трудность?
PS. Этот раздел для помощи, а не для заказа домашних заданий. Поможем с удовольствием.
Автор: z0q
Дата сообщения: 19.01.2006 09:23
dneprcomp

Да дело не в домашенм задании, я поэтому и обратился только когда не нашёл инфы как это можно реализовать.

Обыскал весь инет, но нигде не мог найти как работать в VB 6 со строками, везде идёт только чтение файлов (Line Input #1).

Как мне можно поместить содержимое текстового поля в массив, чтобы к каждой строке можно было обращатся отдельно?
Автор: dneprcomp
Дата сообщения: 19.01.2006 10:05
Обьяви массив:
Dim arLines(10) as string
Строки обычно разделены двумя спецсимволами Chr$(13) & Chr$(10) или(что тоже самое) константой vbNewLine.
Для объединения строк используется &
Автор: z0q
Дата сообщения: 19.01.2006 10:13
dneprcomp
Гуд, а как можно произвольное количество строк в массиве сделать? То есть, если изначально неизвестно кол-ство?
Автор: dneprcomp
Дата сообщения: 19.01.2006 10:29
z0q
Обьяви динамический массив:
Dim arLines() as string
Перед использованием его необходимо инициализировать:
ReDim arLines(10) или с сохранением значений ReDim Preserve arLines(10)
Честно говоря, непонятно. Неужели ты не смог найти в хелпе описание массивов?
Перечитай мой предыдущий пост. Я там немного подредактировал.
Автор: z0q
Дата сообщения: 19.01.2006 10:32
dneprcomp
Спасибо, сейчас буду сидеть, и разбиратся что и как, что бы понять всё самому.

З.Ы. Мне просто сначал не приходила в голову объявить в массив строки.
Автор: Anatolij2005
Дата сообщения: 06.02.2006 10:22
Необходимо написать макрос в VBA для Wordа который должен выделеный фрагмент преобразовать в текстовое поле формы. Обычная запись макроса не выходит пишет ошибку. Обычные комбинации клавиш работают. Помогите пожалуйста.
Автор: Anatolij2005
Дата сообщения: 07.02.2006 13:08
Добавляю к вчерашнему вопросу код который сгенериран после нажатия клавиш в VBA

Selection.MoveRight Unit:=wdCharacter, Count:=25, Extend:=wdExtend
Selection.Cut
Selection.FormFields.Add Range:=Selection.Range, Type:=0
With Selection.FormFields(1)
.NameLocal = "ТекстовоеПоле1"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = True
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .TextInput
.Type = wdRegularText
.Width = 0
.Default = ""
.Format = ""
End With
End With
Selection.PreviousField.Select
With Selection.FormFields(1)
.Name = "ТекстовоеПоле1"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = True
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .TextInput
.EditType Type:=wdRegularText, Default:= _
"количественное содержание", Format:=""
.Width = 0
End With
End With
End Sub
Автор: Troitsky
Дата сообщения: 07.02.2006 14:24
Anatolij2005
Во-первых, все вопросы по WordVBA тут

Во-вторых, не понял что значит преобразовать выделенный текст в поле. Если имелось ввиду создать на месте выделенного текста текстовое поле и пометить туда в качестве текста по умолчанию выделенный текст то, кажется, делается это так:

Код: Dim strText As String

strText = Selection.Text
Selection.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormTextInput
With ActiveDocument.FormFields(1)
.Enabled = True
.TextInput.EditType Type:=wdRegularText, Default:=strText, Format:=""
End With
Автор: laika
Дата сообщения: 07.02.2006 18:05
пжалста, помогите бедной девочке!
у меня выходит параша по информатике! я не хочу закончить школу со спаравкой!
решите мне задачу!!!!!! и если сможете, нарисуйте блок схему!!!!
задача:

Массив: Z(30)
действия: расположить в массиве R сначала положительные, а затем торицательные элементы массива Z/
ограничений нет.

заранее спасибо всем желающим мне помочь!
если живете в питере,благодарить буду лично;)))))))

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

мой мэйл: anka_mango@mail.ru
Автор: respite
Дата сообщения: 08.02.2006 10:27

Цитата:
Массив: Z(30)
действия: расположить в массиве R сначала положительные, а затем торицательные элементы массива Z/
ограничений нет.


Как вариант:
0. Обнуляем все элементы массива R.
1. Перебираем все элементы в массиве Z.
2. Элемент положительный? Если да, то ищем первый с начала нулевой элемент массива R, в него записываем текущее значение из массива Z.
3. Иначе ищем первый с конца нулевой элемент массива R, туда записываем текущее значение.
4. Переходим к следующему элементу массива Z.
Автор: Anatolij2005
Дата сообщения: 08.02.2006 13:25
Огромное человеческое спасибо за помощьTroitsky


Добавлено:
Все работает но текст который до этого был выделен почемуто оказывается не вставленным в текстовое поле
Автор: Alisa89
Дата сообщения: 08.02.2006 21:33
Блин, а может мне кто-нить помочь с задачей? Надо сделать блок схему и программный код! А я вообще в информатике, как ежик в тумане!
Задача:
Найти средне арифметическое чётных чисел из "N", введенных с клавиатуры

Пожалуйста, помогите мне!!!! плииииииииииз
Автор: laika
Дата сообщения: 08.02.2006 21:47
Огромное спасибо что откликнулся, Respite, но в твои инструкции такая тупая как я вобще не врубилась. моя проблема в том, что я вооообще не умею составлять программы!
и то что ты написал мне ни о чем не говорит
как я поняла ты написал план того что мне надо сделать, но я даже по плану сама
никогда не смогу составить программу.....

мне нужна сама программа, то есть именно то, что я введу, нажму шифт ф 5, и она будет не знаю что там делать, ну в общем работать!
учитель вообще ничем не помогает, ничего не объясняет,жаль конечно,но эту тему я уже не пойму.может есть какая нибудь классная книжка?где все понятно написано?где есть примеры решения задач?и составления блок-схемы?
все говорят что со справкой меня точно в универ не возьмут.ну на крайняк в путягу.
Автор: Troitsky
Дата сообщения: 09.02.2006 19:34
Anatolij2005

Цитата:
Огромное человеческое спасибо за помощьTroitsky

Добавлено:
Все работает но текст который до этого был выделен почемуто оказывается не вставленным в текстовое поле


А каков тогда результ выполнения этого кода и за что мне тогда спасибо если ничего не работает?

У меня (OfficeXP) выделенный текст становится текстом по умолчанию (Default) в создаваемом поле, только длина выделенной строки не должна превышать 255 символов, иначе возникает ошибка.
Автор: Anatolij2005
Дата сообщения: 10.02.2006 10:05
Может я немного не правильно сформулировал задачу. Первый текст который хочу сделать текстовым полем без проблем становится полем(здесь код работает).А вот последующие становятся пустыми полями и текст на этом месте исчезает. Необходимое количество полей около 500.Пробовал делать цикл но поскольку опыта в написании программ практически нет, ничего хорошего не получилось. Буду очень благодарен если вы мне еще раз поможете.
Автор: Troitsky
Дата сообщения: 10.02.2006 15:43
Anatolij2005

Цитата:
Буду очень благодарен если вы мне еще раз поможете.

В настоящий момент несколько трудно со временем, чтобы детально разбираться, но, пожалуй, код должен выглядеть так:
Код: Sub Макрос1()
Dim strText As String

strText = Selection.Text
Selection.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormTextInput
With ActiveDocument.FormFields(ActiveDocument.FormFields.Count)
.Enabled = True
.TextInput.EditType Type:=wdRegularText, Default:=strText, Format:=""
End With
End Sub
Автор: NEOMATRIX
Дата сообщения: 11.02.2006 18:40
Тема: Разработать процедуру.
Задача: Из заданного на плоскости множества точек выбрать три такие, которые составляют треугольник наименьшей площади.

Идея мне в принципе понятна, нужно задать данные точки, затем найти наименьшее расстоянийе к ближайшим 2 точкам и высчитать площадь. Вопрос в том как бы это реализовать в коде.
Автор: Anatolij2005
Дата сообщения: 13.02.2006 11:18
Ура, спасибо от нашего немногочисленного отдела, все прекрасно работает!!!!
Автор: NEOMATRIX
Дата сообщения: 15.02.2006 21:37
Есть идеи ? по поводу задачи.
Автор: respite
Дата сообщения: 16.02.2006 10:52
NEOMATRIX

Цитата:
Есть идеи ? по поводу задачи.

Опиши подробнее входные данные (двумерный массив?).

Пока вырисовывается такой вариант: перебрать все точки, найти две, расстояние между которыми минимально. После этого найти ближайшую точку к ним. Хотя тут тоже могут быть ошибки, например, когда две точки стоят рядом, но очень далеко от остальных.
Автор: NEOMATRIX
Дата сообщения: 16.02.2006 19:04
respite
Да двумерный массив. Я больше сказать не могу.
Автор: gerrCrazzy
Дата сообщения: 22.02.2006 18:34
NEOMATRIX
Собственно respite предлагал

Цитата:
перебрать все точки, найти две, ...

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


Цитата:
Да двумерный массив. Я больше сказать не могу.

Отчего такая секретнось? Модель захвата проекции звездного неба строишь?
Автор: Troitsky
Дата сообщения: 22.02.2006 19:05
NEOMATRIX
gerrCrazzy
Не силен я в алгоритмах, но как то долго получится все возможные тройки точек перебирать и площадь находить - это решение в лоб. Упростить, думаю, можно как то.

А вот можно ли утверждать, что наименьшую площадь будет иметь такой треугольник, двумя вершинами которого являются две самые близкорасположенные точки? Кажется, да (интересно как это доказать ). Если да, то задача упрощается и после нахождения двух таких точек остается сравнить площади только треугольников построенных на этой стороне.

Добавлено:
Хотя нет, утверждение неверное
Автор: NEOMATRIX
Дата сообщения: 22.02.2006 20:25
gerrCrazzy

Цитата:
Отчего такая секретнось? Модель захвата проекции звездного неба строишь?

Какая еще секретность ? Это я от незнания сказать не могу т.е нечего сказать ))
Автор: wInuX
Дата сообщения: 23.02.2006 15:49
Troitsky

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

точно нет. Пример: в одной части плоскости две точки на наименьшем растоянии. в другой три точки на небольших растояниях (на большем чем первые две). у треугольника на трех точках площадь будет наименьшей.


NEOMATRIX
Алгоритм такой:

[deleted] здесь был не правильный алгоритм


Добавлено:
хотя.. что-тоя уже сам в алгоритме не уверен. сейчас еще подумаю...
Автор: Atec
Дата сообщения: 24.02.2006 18:01
Troitsky
wInuX

сильно не пинайте если ерунду предлагаю.

как идея:
1. найти тройки точек, максимально близко расположенных по Х
2. то же самое по У
3. из этих двух наборов найти совпадающие тройки
4. из найденых совпадений выбрать треугольник с наименьшей площадью.

ЗЫ. тоже как то коряво ... практически в лоб ... но мне кажецца тут другова варианта, кроме как "в лоб" трудно придумать. хотя ...

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

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


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