работа с массивами

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
timson9
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 09.08.2006 (Ср) 20:26

работа с массивами

Сообщение timson9 » 09.08.2006 (Ср) 21:45

Здрасте! Ни кто не поможет с массивами?
Дано два массива цифр например первый от 1 до 10 второй случайные 3 числа от 1 до 10 - задача
надо сравнить второй с первым и отсутствующие цифры записать в третий массив

спасиба

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.08.2006 (Ср) 21:49

Домашнее задание делаем?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

timson9
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 09.08.2006 (Ср) 20:26

Сообщение timson9 » 09.08.2006 (Ср) 22:01

GSerg писал(а):Домашнее задание делаем?



да нет просто хочу научиться работе с массивами

Dim a()
Dim b()
Dim c()

Dim i, j, y
Dim Msg

redim a(5)
a(0)=1
a(1)=2
a(2)=3
a(3)=4
a(4)=5

redim b(2)
b(0)=2
b(1)=3

redim c(4)

for j = 0 To 1

for i = 0 to 4

if a(i) <> b(j) then

c(y) = a(i)

msg = msg & cstr(c(y)) & " "


end if

next

next
MsgBox Msg

вот этот скрипт выдает неправильно "1 3 4 5 1 2 4 5" а должен был " 1 4 5 "

не подскажешь где надо исправить ?

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Re: работа с массивами

Сообщение vvs_adm » 09.08.2006 (Ср) 22:11

timson9 писал(а):Дано два массива цифр например первый от 1 до 10
Нда... 10 - какая странная цифра ;)
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.08.2006 (Ср) 22:42

vvs_adm

10 - это цифра A. Ну он про 0xA :)


timson9
Убил бы дибилатнутого учителя, который научил тебя так кодить...

Видимо он говорил:
Переменные надо всегда объявлять

но про типы сам ничего не знал.

Какой смысл использовать динамический массив? Видимо, всё тот же учитель:
Массив объявляется так:
Dim имя_массива()
А его размер изменяется так:
ReDim имя_массива(ЧислоЭлементов)


Проведём коррекцию. Во-первых, автор,
ReDim имя_массива(ЧислоЭлементов)

То число в скобочках, это не число элементов. Это номер последнего элемента. И ты там должен был написать 4. Тебе ведь надо было 5 элементов, да? Ну вот. [0], [1], [2], [3], [4]... сколько всего? 5? Точно?
Но ты автар, можеть быть и был бы прав, если бы у тебя нумерация массива начиналась с 1. Тебе надо было бы в начале модуля поставить Option Base 1. Но даже не надо быть телепатом, чтобы определить, что там у тебя этой строчки нет - ты выложил код где работаешь с 0-евым индексом.

Это первое.

Во-вторых, автор, тебе сойдёт обычный массив. Не динамический... Его размер нельзя изменить во-время работы программы, но ведь ты его и не меняешь? Поэтому просто
Код: Выделить всё
Dim a(4)
и без лишних движений...

В-третьих,
Код: Выделить всё
a(0)=1
a(1)=2
a(2)=3
a(3)=4
a(4)=5


Ой-ой... как не красиво. Ну вопервых, есть цикл. Я вижу, ты знашь что это такое, и сумел бы применить к заполнению массива.
Скажешь - "А что если я хочу чтобы там были не 1 2 3 4 5, а произвольные числа?". Да ради бога. Есть такая замечательная функция Array().
Код: Выделить всё
Массив = Array(1,2,3,4,5,66, 98, 777, 1138)


Ну а теперь... решение твоей задачи.

Код: Выделить всё
Dim a() As Integer
Dim c() as integer
Dim i   As Integer
Dim j   As Integer
Dim bF as Boolean
Dim iNF as Integer
a = Array(1,2,3,4,5,6)
b = Array(2,3)

'----------------
Redim c(LBound(a) to UBound(a))

For i = LBound(a) to UBound(a)
bF = False
For j = LBound(b) To UBound(b)
  If a(i) = b(j) Then bF = bF Or True
Next j
If bF Then
  Redim Preserve c(LBound(c) To UBound(c) - 1)
Else
  c(LBound(c) + iNF) = a(i)
  iNF = iNF + 1
End if
Next i



После этого проверяй массив C. Там будет именно то что тебе нужно.

ЗЫ. И заключай код в теги
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

timson9
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 09.08.2006 (Ср) 20:26

Re: работа с массивами

Сообщение timson9 » 10.08.2006 (Чт) 1:53

vvs_adm писал(а):
timson9 писал(а):Дано два массива цифр например первый от 1 до 10
Нда... 10 - какая странная цифра ;)



Ну да я спешил просто и в скрипте на набрал токо 5 цифр :D

хотя надо 10

timson9
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 09.08.2006 (Ср) 20:26

Сообщение timson9 » 10.08.2006 (Чт) 2:04

ТУ: Хакер спасиб братан очень помог !!!!

timson9
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 09.08.2006 (Ср) 20:26

Сообщение timson9 » 10.08.2006 (Чт) 5:57

ой а как этот код перевести на vbscript ?

у меня чета не палучается :o

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 10.08.2006 (Чт) 7:30

Убрать типы.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

timson9
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 09.08.2006 (Ср) 20:26

Сообщение timson9 » 10.08.2006 (Чт) 11:27

Хакер писал(а):Убрать типы.


ок понял!!!!

ещё раз спасиба за помощь !!!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 34

    TopList