powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с массивами
61 сообщений из 61, показаны все 3 страниц
Работа с массивами
    #38869281
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто-то может на пальцах объяснить как автор получил тут 220?
i = 2: a(3) = 10: a(i) = 100: a(i + 6) = a(i) + a(5 - i): i = 0:
Debug.Print a(i + 3) + a(2) + a(i + 8)
...
Рейтинг: 0 / 0
Работа с массивами
    #38869307
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
i = 2
a(3) = 10
a(i) = 100
a(i + 6) = a(i) + a(5 - i)
i = 0

Debug.Print a(i + 3)
Debug.Print a(2)
Debug.Print a(i + 8)



Бумажка, листик, калькулятор
Пошаговое выполнение, окно Locals, окно Watch
...
Рейтинг: 0 / 0
Работа с массивами
    #38869335
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProПошаговое выполнение, окно Locals, окно Watch

Так я изначально так и хотел.
Я просто только начал читать про массивы. закинул это в басик а он ругается sub или function не определены
...
Рейтинг: 0 / 0
Работа с массивами
    #38869341
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учебник, первые страницы - структура программы на VB, синтаксис процедур
...
Рейтинг: 0 / 0
Работа с массивами
    #38869343
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или на что ругается-то?
может ты массив не объявил?
Код: vbnet
1.
Dim a(100) As Long, i As Integer
...
Рейтинг: 0 / 0
Работа с массивами
    #38869350
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proможет ты массив не объявил?
Не объявил! Автор красавец. Еще не рассказал как правильно их объявлять и пишет -" Ответьте что напечатает фрагмент"
...
Рейтинг: 0 / 0
Работа с массивами
    #38869356
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так и надо было ответить, а не в студию вбивать
...
Рейтинг: 0 / 0
Работа с массивами
    #38869359
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proтак и надо было ответить, а не в студию вбивать
Так если я не понимаю как он там 220 получил. Я и хотел в пошаговом сделать.
...
Рейтинг: 0 / 0
Работа с массивами
    #38869404
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или условия задачи неверные или постановка задачи некорректная.
...
Рейтинг: 0 / 0
Работа с массивами
    #38869414
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneили условия задачи неверные или постановка задачи некорректная.или ТС просто не понимает, так как 220 - правильный ответ )
...
Рейтинг: 0 / 0
Работа с массивами
    #38869450
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proили ТС просто не понимает, так как 220 - правильный ответ )
Ребят, у меня вопрос не по теме, что такое ТС?)) Это какое-то кодовое ругательство?
А то я уже начинаю свыкаться с мыслью что я ТС)))

А по теме- Если бы автор в качестве решения показал вот так, то наверное любой бы понял.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Form_Load()
Dim a(100) As Long, i As Integer, b As Integer, ñ As Integer
i = 2
a(3) = 10
a(i) = 100
b = a(i + 6)
c = a(i) + a(5 - i)
a(i + 6) = a(i) + a(5 - i)
i = 0
Debug.Print a(i + 3) + a(2) + a(i + 8)
End Sub
...
Рейтинг: 0 / 0
Работа с массивами
    #38869453
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronя ТС)))ты - безусловно ТС!

ТС <= ТопикСтартер <= Topic Starter <= словарь английского
...
Рейтинг: 0 / 0
Работа с массивами
    #38869459
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProТС <= ТопикСтартер <= Topic Starter <= словарь английского
Да и без словарика понятно что автор темы)
...
Рейтинг: 0 / 0
Работа с массивами
    #38872483
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть массив типа string из 10 имен. Автор спрашивает как узнать есть ли из них тезки.
Обычным циклом я смогу проверить только допустим все соседние. Понятно, что если много циклов организовать, то можно и проверить, ну это же чесание левого уха правой рукой.
Подскажите пожалуйста как проще сделать. Автор не дает ответа по этому заданию а мне интересно.

Код: vbnet
1.
dim Name(1 to 10) as string



Ну и обычным присвоением задаются значения любых имен
...
Рейтинг: 0 / 0
Работа с массивами
    #38872491
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это что у вас там за задачи и зачем они вам нужны?
для такого проще dictionary использовать, там есть exists()
...
Рейтинг: 0 / 0
Работа с массивами
    #38872503
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

Он учится.

vdekameronПонятно, что если много циклов организовать, то можно и проверитьне много, а всего два. Внешний - перебор образцов для сверки, внутренний, перебор на предмет дублей.

Это - учебное решение в лоб, конечно, существуют другие решения.
...
Рейтинг: 0 / 0
Работа с массивами
    #38872505
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneэто что у вас там за задачи и зачем они вам нужны?
Ну Тема- массивы, задание не по теме, но есть. Не знаю зачем, видимо автор решил что нужно)
...
Рейтинг: 0 / 0
Работа с массивами
    #38872511
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proне много, а всего два. Внешний - перебор образцов для сверки, внутренний, перебор на предмет дублей.
А подробнее можно или хотя бы подсказку попрозрачнее
...
Рейтинг: 0 / 0
Работа с массивами
    #38872527
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Представь, что у тебя есть листок с фамилиями в произвольном порядке (чтобы исключить ответ "пробежать глазами" пусть их будет не 10, а 1000). Представь, что тебе самому нужно выполнить это задание, компьютера у тебя нет, только бумага и ручка.

Опиши КАК МОЖНО БОЛЕЕ ФОРМАЛЬНО и подробно последовательность своих действий
...
Рейтинг: 0 / 0
Работа с массивами
    #38872538
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
взять розовый маркер и выделить им все строчки с одинкаовыми именами
...
Рейтинг: 0 / 0
Работа с массивами
    #38872544
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneдля такого проще dictionary использовать, там есть exists()Каждый программист несколько раз в жизни восклицает: "...твою мать, есть такой замечательный способ (инструмент), а я корячился вручную!". Это нормально.

Сейчас я пишу на шарпе, но поддерживаю проект на VB6. Дописал очередной модуль, обратил внимание, как повлиял шарп на мои подходы к созданию структуры кода на VB6. Просто вИдение в голове меняется. Прочувствовал, почему Сишники всегда называли VB детсадовским языком. Ну то есть, я раньше знал , а теперь прочувствовал
...
Рейтинг: 0 / 0
Работа с массивами
    #38872546
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneвзять розовый маркер и выделить им все строчки с одинкаовыми именами не, придется взять столько разноцветных маркеров, сколько разных имен имеют повторы. Поэтому, прежде чем идти в магазин за маркерами, надо посчитать их количество
...
Рейтинг: 0 / 0
Работа с массивами
    #38872559
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну это да, понятно.
я про поиск ВАСЯ по всему массиву.
нужен ПЕТЯ - синий маркер и тд и тп
...
Рейтинг: 0 / 0
Работа с массивами
    #38872570
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneну это да, понятно.
я про поиск ВАСЯ по всему массиву.
нужен ПЕТЯ - синий маркер и тд и тпна самом деле, если вчитаться в задание - ничего раскрашивать не надо. Нужно при первой же встрече тезки прервать поиск и выдать сообщение "Тезки есть, как минимум один".
...
Рейтинг: 0 / 0
Работа с массивами
    #38872585
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proна самом деле, если вчитаться в задание - ничего раскрашивать не надо. Нужно при первой же встрече тезки прервать поиск и выдать сообщение "Тезки есть, как минимум один".
ну да.
А если без фломастеров, то пробежал бы глазами по именам и при первом повторившемся остановился бы.
...
Рейтинг: 0 / 0
Работа с массивами
    #38872593
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronShocker.Proна самом деле, если вчитаться в задание - ничего раскрашивать не надо. Нужно при первой же встрече тезки прервать поиск и выдать сообщение "Тезки есть, как минимум один".
ну да.
А если без фломастеров, то пробежал бы глазами по именам и при первом повторившемся остановился бы.

вот и ок, значит ты понял алгоритм. теперь его воплоти в программе
...
Рейтинг: 0 / 0
Работа с массивами
    #38872595
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProСишники всегда называли VB детсадовским языком. Ну то есть, я раньше знал , а теперь прочувствовал
А , простите, на каком языке написан весь office и вся винда?
...
Рейтинг: 0 / 0
Работа с массивами
    #38872599
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Onevdekameronпропущено...

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

вот и ок, значит ты понял алгоритм.сомневаюсь.
Еще раз - опиши конкретную последовательность действий. У тебя 1000 имен, они не помещаются даже на один листок бумаги, одинаковыми могут оказаться 188-й и 561-й. Ты не увидишь это при "пробеге глазами". Как конкретно ты будешь проверять?
...
Рейтинг: 0 / 0
Работа с массивами
    #38872602
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneвот и ок, значит ты понял алгоритм. теперь его воплоти в программе
Так я с самого начала алгоритм понимал)) А воплотить не знаю как. Сначала цикл возник в голове. Потом отверг, т.к. в цикле смогу сравнить только соседние имена. А соседние могут и не быть равны а через 2 например быть равны.
...
Рейтинг: 0 / 0
Работа с массивами
    #38872604
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronТак я с самого начала алгоритм понималда нихрена ты его не понимал! Забудь про компьютер. Есть только листок с 1000 имен, чистый листок (если нужно) и ручка. Всё. Думай, как будешь искать дубли.
...
Рейтинг: 0 / 0
Работа с массивами
    #38872606
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже дали ответ выше: вложенный цикл.
можно написать рекурсию
...
Рейтинг: 0 / 0
Работа с массивами
    #38872608
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЕще раз - опиши конкретную последовательность действий. У тебя 1000 имен, они не помещаются даже на один листок бумаги, одинаковыми могут оказаться 188-й и 561-й. Ты не увидишь это при "пробеге глазами". Как конкретно ты будешь проверять?

Ну если только бумага и ручка и 1000 имен, то конечно не поместятся столько мне в память и могу пропустить если вначале и конце.
Как вариант буду сначала отмечать ручкой все те имена у которых например первые 3 буквы одинаковы, затем из них проверю одинаковость уже всего имени
...
Рейтинг: 0 / 0
Работа с массивами
    #38872611
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronКак вариант буду сначала отмечать ручкой все те имена у которых например первые 3 буквыда нафига? потом тебе придется сравнивать имена, у которых три первые буквы совпадают, остальные нет, не нужно усложнять алгоритм. Сравнивай имена целиком.
Да и без разницы, даже для трех букв тебе нужно найти эти совпадения. Думай, КАК ты их будешь искать.
...
Рейтинг: 0 / 0
Работа с массивами
    #38872614
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Представь, что это твоя работа, за нее тебе заплатят 100000руб (при условии, что не будет ошибки ). Тебе нужно качественно выполнить эту работу. Время у тебя не ограничено.

Так тебе легче?
...
Рейтинг: 0 / 0
Работа с массивами
    #38872621
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProДумай, КАК ты их будешь искать.
Заведу переменную в которую запишу первое имя, затем проверю с каждым, потом запишу второе имя и проверю со всеми и так до 1000
...
Рейтинг: 0 / 0
Работа с массивами
    #38872625
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronЗаведу переменную в которую запишу первое имя, затем проверю с каждым, потом запишу второе имя и проверю со всеми и так до 1000ну наконец то. Почему тебя заставлять-то надо все время.

Итак:запишу первое имя
запишу второе имя
и так до 1000это цикл. внешний цикл. Он выполняется один раз.
проверю со всемиэто (надеюсь, ты понимаешь) еще один цикл. Сколько раз он будет выполнен?
...
Рейтинг: 0 / 0
Работа с массивами
    #38872628
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) do while
2) do until

изучай
...
Рейтинг: 0 / 0
Работа с массивами
    #38872629
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потом можно подумать о том, что если ты сверил имя №1 с именем №5, то имя №5 с именем №1 сравнивать уже будет не нужно, но если не сообразишь сразу, пока создай конструкцию пусть даже с повторными проверками
...
Рейтинг: 0 / 0
Работа с массивами
    #38872633
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One1) do while
2) do until

изучайда ладно тебе усложнять) ему же тут итератор потребуется. Пусть хотя бы понятие вложенного цикла освоит )
...
Рейтинг: 0 / 0
Работа с массивами
    #38872640
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не освоит

for i to n
'сохраняем значение
...
for j to n
'проверяем значение по всем, кроме i=j
'если уже есть,то выходим
if уже есть then
exit for
end if
...
next
next
...
Рейтинг: 0 / 0
Работа с массивами
    #38872643
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

ну как знаешь, я надеялся... )
...
Рейтинг: 0 / 0
Работа с массивами
    #38873013
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, вчера работы навалило. Уже увидел ответ) Можно было и без него) помучился бы, но сделал) Но спасибо)
Вложенные циклы уже проходил и do while , do until тоже , вот только практики мало. У вас это уже просто шаблонами в голове. Есть задача - сразу есть ответ. Как в шахматах - дебют, который постоянен и только в исключительных случаях может корректироваться.
...
Рейтинг: 0 / 0
Работа с массивами
    #38873054
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronУ вас это уже просто шаблонами в головевсе верно
...
Рейтинг: 0 / 0
Работа с массивами
    #38875351
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочел про массивы, появилась идея в проекте использовать не формулы, а массивы, так точнее и правильнее будет.
Только автор книги ограничился вводом массивов руками. А у меня они здоровые и не один. Писать в excel все через ";" тоже муторно.
Подскажите, пожалуйста, может есть способ закинуть большой массив в проект,не затратив на это пол дня.
...
Рейтинг: 0 / 0
Работа с массивами
    #38875515
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronможет есть способ закинуть большой массив в проект"Чтобы продать что-то ненужное, надо сначала купить что-то ненужное. А у нас денег нет..."©

Это я к чему: а откуда брать значения для массива? Вы хоть напишите где они: на листе, на бумаге, в голове, в файле...
...
Рейтинг: 0 / 0
Работа с массивами
    #38875681
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_PristВы хоть напишите где они: на листе, на бумаге, в голове, в файле...
Данные в excel (не массивы). Хочу представить их в виде массивов и использовать для расчета в проекте.
Реальный пример:-
Значения от 26 до 27 соответственно равны 38,21-41,27. Т.е. я понимаю что есть 2 одномерных массива
1) Бьеф(100) as single
2) Водосброс(100) as single
Если я ,например, вот так введу их в память проекта:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Form_Load()
Dim i As Integer, j As Integer
  Dim Бьеф(100) As Single
  Dim Водосброс(100)  As Single
     Бьеф(0) = 26
      For i = 1 To 100
         Бьеф(i) = Round((Бьеф(i - 1) + 0.01), 2)
      Next i
      Водосброс(0) = 38.21
        For j = 1 To 100
          Водосброс(j) = Round((Водосброс(j - 1) + 0.0306), 4)
        Next j
End Sub

То как мне потом организовать соотношение этих двух массивов. Например вводим Бьеф=100 и должны получить Водосброс =41,27
...
Рейтинг: 0 / 0
Работа с массивами
    #38875709
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем тут вообще массивы, если зависимость определяется формулой и можно вывести x по y?
...
Рейтинг: 0 / 0
Работа с массивами
    #38875718
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronДанные в excel (не массивы)А конкретнее? В ячейках? В каких? Откуда код должен знать какие значения в массив вносить?
Если в ячейках - можно так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim Бьеф
Dim Водосброс
Бьеф = Range("A1:A10").Value
Водосброс = Range("B1:B10").Value
'массивы, созданные забором значений из ячеек всегда двумерные и имеют нижнюю границу равную 1
for li = 1 to ubound(Бьеф,1)
Debug.Print Бьеф(li,1)
Debug.Print Водосброс(li,1)
next
...
Рейтинг: 0 / 0
Работа с массивами
    #38875764
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proа зачем тут вообще массивы, если зависимость определяется формулой и можно вывести x по y?
Вот я изначально делал через функции зависимости, но подумал может лучше массивами) короче сам себе геморрой устраиваю)
...
Рейтинг: 0 / 0
Работа с массивами
    #38875771
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_PristОткуда код должен знать какие значения в массив вносить?
Как это откуда, я же привел реальный пример. Есть исходные данные и известно какие данные и с каким шагом меняются, другой вопрос целесообразности использования тут массивов, походу не целесообразно.
...
Рейтинг: 0 / 0
Работа с массивами
    #38875778
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,

Тут Shocker.Pro правильно заметил - есть зависимость и можно в том же excel построить по этим данным график зависимости и получить функцию.
Хотел повыпендриваться сам перед собой) и сделать через массивы
...
Рейтинг: 0 / 0
Работа с массивами
    #38878801
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот показательная задача того, чего я никак не мог понять.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Option Explicit
 Dim a(1 To 5) As Integer
 Dim b(1 To 5) As Integer


Private Sub Command1_Click()
    a(1) = 4: a(2) = 5: a(3) = 2: a(4) = 5: a(5) = 4
    b(1) = 4: b(2) = 3: b(3) = 4: b(4) = 4: b(5) = 3
 If &#208;&#224;&#231;&#237;&#232;&#246;&#224;(a) < &#208;&#224;&#231;&#237;&#232;&#246;&#224;(b) Then Debug.Print "&#207;&#229;&#240;&#226;&#251;&#233; &#234;&#235;&#224;&#241;&#241; &#243;&#247;&#232;&#242;&#241;&#255; &#235;&#243;&#247;&#248;&#229;" Else Debug.Print "&#207;&#229;&#240;&#226;&#251;&#233; &#234;&#235;&#224;&#241;&#241; &#243;&#247;&#232;&#242;&#241;&#255; &#245;&#243;&#230;&#229;"
End Sub

Private Function &#208;&#224;&#231;&#237;&#232;&#246;&#224;(c As Variant) As Integer
  &#208;&#224;&#231;&#237;&#232;&#246;&#224; = &#204;&#224;&#234;&#241;&#232;&#236;&#243;&#236;(c) - &#204;&#232;&#237;&#232;&#236;&#243;&#236;(c)
End Function
Private Function &#204;&#224;&#234;&#241;&#232;&#236;&#243;&#236;(c As Variant) As Integer
 Dim i As Integer
 &#204;&#224;&#234;&#241;&#232;&#236;&#243;&#236; = c(1)
   For i = 2 To 5
     If c(i) > &#204;&#224;&#234;&#241;&#232;&#236;&#243;&#236; Then &#204;&#224;&#234;&#241;&#232;&#236;&#243;&#236; = c(i)
   Next i
End Function
Private Function &#204;&#232;&#237;&#232;&#236;&#243;&#236;(c As Variant) As Integer
  Dim i As Integer
    &#204;&#232;&#237;&#232;&#236;&#243;&#236; = c(1)
      For i = 2 To 5
        If c(i) < &#204;&#232;&#237;&#232;&#236;&#243;&#236; Then &#204;&#232;&#237;&#232;&#236;&#243;&#236; = c(i)
    Next
End Function
...
Рейтинг: 0 / 0
Работа с массивами
    #38878809
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Option Explicit
 Dim a(1 To 5) As Integer
 Dim b(1 To 5) As Integer


Private Sub Command1_Click()
    a(1) = 4: a(2) = 5: a(3) = 2: a(4) = 5: a(5) = 4
    b(1) = 4: b(2) = 3: b(3) = 4: b(4) = 4: b(5) = 3
 If Raznica(a) < Raznica(b) Then Debug.Print "&#207;&#229;&#240;&#226;&#251;&#233; &#234;&#235;&#224;&#241;&#241; &#243;&#247;&#232;&#242;&#241;&#255; &#235;&#243;&#247;&#248;&#229;" Else Debug.Print "&#207;&#229;&#240;&#226;&#251;&#233; &#234;&#235;&#224;&#241;&#241; &#243;&#247;&#232;&#242;&#241;&#255; &#245;&#243;&#230;&#229;"
End Sub

Private Function Raznica(c As Variant) As Integer
  Raznica = Maximum(c) - Minimum(c)
End Function
Private Function Maximum(c As Variant) As Integer
 Dim i As Integer
 Maximum = c(1)
   For i = 2 To 5
     If c(i) > Maximum Then Maximum = c(i)
   Next i
End Function
Private Function Minimum(c As Variant) As Integer
  Dim i As Integer
    Minimum = c(1)
      For i = 2 To 5
        If c(i) < Minimum Then Minimum = c(i)
    Next
End Function
...
Рейтинг: 0 / 0
Работа с массивами
    #38891692
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vdekameronВот я изначально делал через функции зависимости, но подумал может лучше массивами) короче сам себе геморрой устраиваю)

Похоже без массивов тут не обойтись((( Но их получится72 штуки, что мне кажется не очень. Подскажите пожалуйста есть ли возможность обойтись проще. Попробую доступно объяснить что нужно, хотя это у меня редко получается
Дано:
1)Массивы
Затвор1Ступень1(300,300), Затвор2Ступень1(300,300)...Затвор8Ступень1(300,300)
.
.
.
Затвор1Ступень9(300,300), Затвор2Ступень9(300,300)...Затвор8Ступень9(300,300)

Первая размерность -300 принимает знач. во всех массивах от 26-29 с шагом в 0,01- это Верхний Бьеф
Вторая размерность - 300 в каждом массиве принимает разные значения- это водосброс
2) Исходные данные - Верхний бьеф(например-28.22) , Водосброс(например 200), Константа=10
3) График открытия щитов (сначала открыть 7,5,3,4,6,8) т.е. сначала пробежать массив Затвор7Ступень1, потом Затвор5Ступень1, Затвор3Ступень1 и т.д.

Необходимый алгоритм:( Смысл алгоритма в том, чтобы вычислить какие затворы и на какие ступени нужно открыть, чтобы сбрасывать нужное количество воды)
1)Пробегаем массив Затвор7Ступень1(300,300) и находим бьеф равный исходному- 28.22
2)Смотрим чему равен водосброс в этом массиве при этом бьефе и если он меньше исходного на Константу, то переходим на Затвор5ступень1(при этом запомнив значение водосброса в Затвор7Ступеньй)
3)Пробегаем Затвор5ступень1 находим бьеф 28.22 смотрим какой при этом бьефе водосброс складываем его с водосбросом из Затвор7Ступень1 и сравниваем с исходным(200). Если на константу меньше исходного, то запоминаем водосброс и переходим на след. Затвор3Ступень1.
И так до того момента, пока суммированный водосброс не станет больше исходного. Тогда расчет прекращается и на экран выводится номера затворов которые необходимо открыть на нужное кол-во ступеней и показывается при этом какой будет водосброс.
Потом я планирую все это сделать графически красиво, но это уже потом, если у меня получится сделать основное

Понимаю что в этой паутине несуразных объяснений трудно разобраться, но я буду очень признателен если вы сможете уделить свое время и подсказать лучшее решение.
Заранее огромное спасибо за желание помочь!
...
Рейтинг: 0 / 0
Работа с массивами
    #38891696
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильно я понял, что всего 72 массива по 90 тысяч значений (итого 6,5 млн значений)?
нехилые такие исходные данные, как же ими управляют и в каком виде они вообще предоставлены?
...
Рейтинг: 0 / 0
Работа с массивами
    #38891731
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proправильно я понял, что всего 72 массива по 90 тысяч значений (итого 6,5 млн значений)?
Да вы правильно поняли, но это снова я туплю и неправильно все представил. Каждый из этих 72 массивов наверное не двумерный. Потому что каждому значению верхнего бьефа( который меняется от 26-29 с шагом в сотую, т.е. 300 значений) соответствует одно единственное значение водосброса.
Получается что массив одномерный в котором 300 значений. Вот пример реальных данных одного массива.
...
Рейтинг: 0 / 0
Работа с массивами
    #38891870
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритм, как я понимаю, расписан четко, что мешает его реализовать?
...
Рейтинг: 0 / 0
Работа с массивами
    #38891901
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProАлгоритм, как я понимаю, расписан четко, что мешает его реализовать?

Минимальный опыт в программировании. У меня алгоритм вырисовывается четко в голове. При чем благодаря тому, что я тут четко его расписал, понимаю что можно обойтись без массивов.
Например:
1) запишу процедуру - Затвор7Ступень1, в которой подстатвив значение верхнего бьефа в уравнение, я получу значение водосброса. Сравню с исходным значением и если будет меньше то запомню и перейду на процедуру - Затвор5Ступень1
2) подставлю в уравнение значение верхнего бьефа, получу водосброс, сложу его с водосбросом из Затвор7Ступень1 и сравню с исходным значением. Если окажется меньше перехожу на Затвор3Ступень1
3) Выполняю те же действия и получаю водосброс больше исходного, в этом случае прекращаю расчет и вывожу нужные мне данные.

Парадокс в том, что думаю весь день над тем как сделать и, не найдя решения, иду на крайний шаг- отписываю тут. А когда отписываю,то стараюсь четко вам объяснить, чтобы не тратить много вашего времени. А когда четко расписываю сам допетриваю до того как сделать
Сейчас вроде вырисовалось более-менее. Буду пробовать. Извините за потраченное время
...
Рейтинг: 0 / 0
Работа с массивами
    #38891931
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно отметить, что зависимость очень гладкая и отлично аппроксимируется параболой.
Т.е. вместо массива из 300 значений можно иметь 3 числа, причем найти значение бьефа по водосбросу можно без поиска в массиве, а решая квадратное уравнение.
...
Рейтинг: 0 / 0
Работа с массивами
    #38892016
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский,

Абсолютно в душу верно))
Один в один так и сделал, только мне нужна хорошая точность, поэтому бью весь массив бьефа на 3 промежутка и по ним беру не полином. линию тренда а линейную и получаю 100 проц. точности.
...
Рейтинг: 0 / 0
Работа с массивами
    #38892018
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно увеличиваю себе работу в 3 раза, но компенсирую точностью.

Скажите, а можно ли размерность массива задать дробным числом или это абсурд? В умной книжке которую я прочитал такого варианта не было, вдруг просто автор не привел.
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с массивами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]