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

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

Автор: NEOMATRIX
Дата сообщения: 16.11.2005 18:30


Данный топик предназначен только для обсуждения типовых задач на 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

[more=Top 10 Visual Basic Sins]
Top 10 Visual Basic Sins

Not using option explicit
Not explicitly declaring a data type for all variables and functions.
Dim, Function, or Property without As <type>
(Remember, this is NOT the same as using option explicit.)
Writing unreadable code.
Writing procedures longer than about 2 or 3 screens of code.
Not using a variable, object, and procedure naming convention.
Using the default object names provided by the VB IDE.
Hard coding values which should be data driven or user-defined.
Magic numbers
Path or file names
Lack of attention to the needs of the end user.
Inappropriate use of jargon.
Unfriendly error messages.
Lack of attention to ergonomics.
Poor alignment of controls.
Deviating from standard windows UI guidelines without good reason.
Writing fragile code.
Not using appropriate error handlers.
Failing to anticipate or recover gracefully from common errors.
Not building reusable code.
Using custom controls to do simple programming tasks.
Putting too much code in event procedures.
Not writing dedicated procedures for common tasks.
Poor documentation.
Failing to provide header and source code comments.
Failing to provide supporting documentation.
Improper use of data.
Not limiting the scope of variables.
Not validating inputs and/or outputs.
Using inappropriate data types.
Inappropriately using the assistance of fellow programmers.
Asking for help without making an effort to learn.
Not asking for help with complex problems.
Оригинал
[/more]


Учебники:
Visual Basic для студентов и школьников. Культин Н. (2010)
Занимательное программирование на Visual Basic.NET. Климов А. (2005)
Visual Basic в задачах и примерах. Сафронов (2009)
Visual Basic 2012 на примерах. Зиборов В. (2012)
Автор: DroN_S
Дата сообщения: 16.11.2005 21:14
NEOMATRIX
не понимаю что здесь сложного то...
может я в чём то и ошибаюсь но вроде так...

Код:
Dim i, k As Integer

Private Sub Form_Load()
i = 7
k = 5
If i <> k Then
Label1.Caption = 7
Label2.Caption = 7
Else
Label1.Caption = i * 10
Label2.Caption = k * 10
End If
End Sub
Автор: Advanced_Guest
Дата сообщения: 16.11.2005 21:27
DroN_S
а если И будет не равно 7 ? )

i = 7
k = 5
' но на самом деле надо подругому указывать

If i <> k Then
if i>k then
k=i
else ' i<k
i=k
end if
Else
i = i * 10
k = k * 10
End If

Более логичный вариант:

If i = k Then
i = i * 10
k = k * 10
elseif i>k then
k=i
else ' i<k
i=k
end if

правда не помню как в вб пишеться else if %)
Автор: DroN_S
Дата сообщения: 16.11.2005 21:46
Advanced_Guest

Цитата:
а если И будет не равно 7 ? )

и что?

Код:
If i <> k Then
Автор: NEOMATRIX
Дата сообщения: 16.11.2005 22:00
Большое спасибо ребята. Выручили.

Добавлено:

Цитата:
не понимаю что здесь сложного то...

Я начал учить программирование в институте, с нуля, лекций мало и объясняют слабо. Тяжело :/ Спасибо.
Автор: Advanced_Guest
Дата сообщения: 16.11.2005 22:03
DroN_S
я про строки:
Label1.Caption = 7
Label2.Caption = 7

если мы первоначально изменим что i=3 k = 5
то он всё равно будет ставить везде 7

что есть неправильно.

Добавлено:

Цитата:
Я начал учить программирование в институте, с нуля, лекций мало и объясняют слабо. Тяжело :/ Спасибо.

советую купить/скачать книгу по VB.
Ибо если не понимаешь даже VB - то програмирование ты не поймёшь.

(например данное задание - тут нужно знать только как пользоваться переменными, и оператор IF... ELSE.. А это самые азы любого языка програмирования)
Автор: DroN_S
Дата сообщения: 16.11.2005 23:35
Advanced_Guest
это просто пример
конечно лучше использовать переменные


Цитата:
советую купить/скачать книгу по VB.

да, если ты не понимаешь самого простого условия, то дорога к программированию тебе закрыта
Если нужны книги по VB пиши в ПМ, помогу с ресурсами...
Автор: gvam
Дата сообщения: 20.11.2005 22:30
Здесь был бред
Автор: Lkardin
Дата сообщения: 24.11.2005 00:52
Вот такая задача:
Для заданых цифр k , 1<=k<=9 , i натурального числа n вычислить сумму S=k+kk+kkk+...+kkkk...k , kkkk...k - число из n цифр k.
Помогите плз.
Автор: ShIvADeSt
Дата сообщения: 24.11.2005 04:57
Lkardin
что то вроде этого

Код:
s=0
k= /здесь чему равно к
for i=1 to n
l=0
for j=1 to i
l=l+k*10^(j-1)
next j
s=s+l
next i
Автор: Lkardin
Дата сообщения: 24.11.2005 10:31
ShIvADeSt
Спасибо, а как примерно выглядит блок схема на эту задачу ? голову ломаю, а не то :/
Автор: Arsjusha
Дата сообщения: 27.11.2005 00:59
Прошу помочь добрым советом. У меня есть программка: пишешь на клавиатуре компьютера (или проги), как обычно, а в окошке RichTextBox программы вместо букв появляются знаки (рисунки) семафорной азбуки. Хочу сделать, чтобы по сети два (или более) человека могли таким образом писать друг другу семафором. Программка клиент-сервер есть, соединение проходит хорошо, по этой части вопросов нет. А вот знаки семафора не передаются по сети. Подскажите, пожалуйста. как это можно сделать.
Буду очень признателен.
Автор: Troitsky
Дата сообщения: 27.11.2005 10:19
Arsjusha
Я конечно сетевыми приложениями никогда не занимался, но, думаю, что рациональнее передавать не сами знаки семафора (рисунки), а информацию о них, которая будет соответственно интерпретироваться на принимающей стороне и заменяться на подходящее изображение знака, уже имеющееся (допустим из файла ресурсов).
Автор: Arsjusha
Дата сообщения: 28.11.2005 00:26
Troitsky
Спасибо за подсказку! Об этом я что-то и не подумал, как ни грустно об этом говорить. Маловато опыта, конечно. Сегодня днем попробую этот вариант. О результатах сообщу.
Автор: Arsjusha
Дата сообщения: 04.12.2005 01:07
О результатах передачи по сети рисунков пока сообщить не могу, полетела локальная сеть, пока не настрою никак.
Второй вопрос. В проекте несколько форм. Подключил модуль для установления на форме градиентной верхней полосы. Установил на первой форме, все нормально. К другим не могу подключить модуль, как ни бьюсь. Помогите, пожалуйста, советом. Модуль modGradient.bas к первой форме подключил так: GradientForm Me. К другим формам ни это, и ничто другое не помогает.
Автор: Troitsky
Дата сообщения: 04.12.2005 18:41
Arsjusha

Цитата:
Подключил модуль для установления на форме градиентной верхней полосы.

В смысле?


Цитата:
modGradient.bas к первой форме подключил так: GradientForm Me

Видимо так ты вызываешь из уже подключенного модуля modGradient.bas функцию GradientForm и передаешь в нее как аргумент текущий экземпляр класса Form (ключевое слово Me). Соответственно для того чтобы применить функцию к другой форме нужно чтобы аргументом функции была уже нужная форма.

Хотя не понятно что это за градиентная верхняя полоса...
Уж не строку ли заголовка ты ввиду имеешь?
Автор: Arsjusha
Дата сообщения: 05.12.2005 00:41
Спасибо, Troitsky, за совет!
Да, полоса - это Toolbar формы. Просто я новичок и боюсь что-то неправильно сказать-написать, если под рукой не оказалось необходимой литературы.
Сейчас вот пытаюсь сделать все по Вашему совету, но пока не получается. Завтра сообщу результат очередных попыток.
Автор: dneprcomp
Дата сообщения: 05.12.2005 18:11
Arsjusha
Может оказаться важным время вызова функции. Вероятно ее надо вызывать именно на load формы.
Автор: Arsjusha
Дата сообщения: 06.12.2005 01:59
Да я в Load и делаю.
Все перепробовал, не получается. Из нескольких десяток попыток только при этой в Load формы kubrik(kudrik.frm)
modGradient.GradientForm kubrik
программа запускается, но градиент не появляется.
В отдельном проекте с использованием одной этой формы kubrik все нормально, градиент Toolbara появился. В чем ошибка?

Добавлено:
Конечно, допустил очепятку. Значит, так.
Модуль modGradient.bas
Форма kubrik(kubrik.frm)
Функция модуля GradientForm


Добавлено:
Да, и еще. В отдельном проекте использовал опять выражение Me. То есть
GradientForm Me
В Load, конечно. И все работает.
Автор: dneprcomp
Дата сообщения: 06.12.2005 10:00
Arsjusha
Проверь, совпадают ли все проперти для форм и контролов. Если выложишь два проекта - рабочий и нет - то можно попробовать посмотреть.
PS. ME всего лишь keyword, заменяющий имя вызывающей формы. С тем же успехом можно подставлять имя формы. Кстати, тут и может быть ошибка, если вызываешь из одной формы, а расчитываешь получить эффект в другой.
Автор: NEOMATRIX
Дата сообщения: 06.12.2005 23:09
Помогите плз с задачей:
Дан текстовый ряд. Группы символов, разделенные пробелами (одним или несколькими) и не имея пробелов в середине себя, будем называть словами. Подсчитать сколько раз можно слово встретить в тексте.
Автор: Arsjusha
Дата сообщения: 07.12.2005 01:40
Сделал так. Из первой (загрузочной) формы masha, где все получается и где я применил GradientForm Me, это выражение убрал. Во второй форме его применил. Запустил, на загрузочной, конечно, градиента не было. Вызвал из нее форму kubrik и на ней градиент появился. Вот такая картина.
Затем сделал так. Убрал из загрузочной формы Gradient Me, в форме kubrik применил это:
modGradient.GradientForm kubrik
И градиент на ней (kubrik) появился!
Затем сделал так: на первой форме (masha) применил modGradient.GradientForm masha
Запустил ее. На ней градиент появился. Вызвал из нее форму kubrik, градиент опять исчез.
Вот такая картина. Впечатление такое, будто модуль работает <u>только</u> с одной формой.

Добавлено:
Далее. Когда я захожу во вторую форму (kubrik), то первую делаю masha.Hide. Сделал так: UnLoad masha. И градиент появился: сначала на первой форме (masha), из нее вышел на вторую форму и здесь все нормально. Но когда я вернулся на первую форму из второй, градиент на ней (первой) исчез!
Автор: dneprcomp
Дата сообщения: 07.12.2005 03:32
Arsjusha
Без кода можно только долго и нудно гадать. Может на мыло вышлешь?
NEOMATRIX
А в чем проблемы? Я так понимаю, что это учебное задание. Если есть вопросы по реализации, алгоритму и т.д. всегда пожалуйста. А делать домашние задания...
Мысли по алгоритму есть - выкладывай Функции какие для работы со стрингами думаем использовать - пишем. Смотрим хелп и спрашиваем, что не понятно.

Автор: NEOMATRIX
Дата сообщения: 07.12.2005 20:14
dneprcomp
Ну InSTtr использовать нужно, LTrim, RTrim, Trim тоже, а вот насчет Val затрудняюсь, возможно и нужно перевести в численноею. "Подсчитать сколько раз можно встретить слово ?" ну я думаю тут для начала нужно проверить сколько символов в заданном слове, затем уж приступить к проверке совпадения символов, затем посчитать сколько раз оно встречается. Извините, но начертить блок-схему к этому заданию мне сложно хоть и нужно это тоже сдавать.
Автор: dneprcomp
Дата сообщения: 07.12.2005 21:08
NEOMATRIX
Ну вот, теперь видно что процесс пошел
Попробуем рассмотреть алгоритм.
1.Сохраняем стринг в другую переменную(Зачем пока не знаю. Но т.к. мы собираемся модифицировать стринг, это всегда хорошая идея сохранить оригинал.
2.Отбрасываем начальные и конечные пробелы.(Можно конечно и не чистить, но так проще и красивее)
3.Находим пробел.
4.Заносим слово в переменную, увеличиваем счетчик на 1, отрезаем найденное,
чистим пробелы.

А вот тут возможны варианты

5а.Можно сразу пробежаться по всему стрингу, находя такие же слова. Если есть, то увеличиваем счетчик на 1 и вырезаем это слово из стринга. И т.д. Если нет, то 4.
5б.А можно последовательно исполнять 4, каждый раз проверяя переменные на наличие. Если есть, то увеличиваем счетчик. Если нет, повторяем 4.

Где учимся и на каком уровне?
Автор: NEOMATRIX
Дата сообщения: 07.12.2005 22:09

Цитата:
Где учимся и на каком уровне?

Учусь на экономиста, в вузе, 1-й курс. Т.е на каком уровне ? Если вы о уровне дачи знаний, то на ацтойном. Я б не просил помощи еслиб объясняли нормально, сыпанули 5 л.р как хотите так и разгребайте....Вот


Добавлено:
Я то вижу ваш алгоритм, но как это реализоваь в коде. Сейчас попробую понять.
Автор: dneprcomp
Дата сообщения: 07.12.2005 23:28
NEOMATRIX
На экономическом програмирование конечно не по профилю. Давай код, посмотрим. И не плохо бы было понять, что можно/нужно использовать по заданию, были ли даны каие-нибудь рекомендации. А то ведь можно такое через new type делать, а можно через массив.
Цитата:
сыпанули 5 л.р
Чего это такого сыпанули?
Автор: NEOMATRIX
Дата сообщения: 07.12.2005 23:36

Цитата:
Чего это такого сыпанули?

5 лабараторных работ.

Добавлено:

Цитата:
И не плохо бы было понять, что можно/нужно использовать по заданию, были ли даны каие-нибудь рекомендации. А то ведь можно такое через new type делать, а можно через массив.

Тема: Обработка рядов (рядков).
Автор: Troitsky
Дата сообщения: 08.12.2005 07:30
NEOMATRIX
dneprcomp

Как вариант:
Дописываем в начало и в конец строки по пробелу. В цикле функцией InStr ищем позицию вхождения слова "_слово_" (вместо подчерков пробелы) в строку. Если функция возвращает ненулевое значение увеличиваем счетчик и вырезаем слово из строки. как только условие цикла перестанет выполняться (функция InStr возвратит 0), то в переменной счетчика мы будем иметь количество вхождений слова в строку.
Автор: dneprcomp
Дата сообщения: 08.12.2005 07:53
Troitsky
Вот к этому я и хотел подвести NEOMATRIX.(См пункт 5а в моем алгоритме.) Только я хотел, чтобы он сам догадался. Дайте человеку подумать.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

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


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