Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
Orastar
-
- Начинающий

-
-
- Сообщения: 17
- Зарегистрирован: 29.11.2004 (Пн) 15:41
Orastar » 08.12.2004 (Ср) 15:59
Есть два массива, один одномерный массив из 4 чисел (например 1,2,3,4) и есть двухмерный масив (4 на 100). Эти два массива надо сравнить построчно, т.е. если одномерный массив совпадает с какой-нибудь стокой двумерного массива - вывести кол-во совпадений и строку которая совпала.
Буду очень признателен за помощь. Заранее спасибо.
-
tyomitch
-
- Пользователь #1352

-

-
- Сообщения: 12822
- Зарегистрирован: 20.10.2002 (Вс) 17:02
- Откуда: חיפה
tyomitch » 08.12.2004 (Ср) 16:02
Писать одно и то же в два форума сразу нехорошо.
-
Orastar
-
- Начинающий

-
-
- Сообщения: 17
- Зарегистрирован: 29.11.2004 (Пн) 15:41
Orastar » 08.12.2004 (Ср) 16:04
Извиняюсь, я здесь недавно, и не знаю к какому форуму эта тема относиться.
-
Gemini
-
- Постоялец

-

-
- Сообщения: 390
- Зарегистрирован: 24.07.2002 (Ср) 14:15
- Откуда: Ozersk
-
Gemini » 08.12.2004 (Ср) 16:26
По идее должно быть так...
For X = 0 to 4
For Y = 0 to 100
For Z = 1 to 4
if Массив(Z)=Массив(X,Y) then N = N + 1
Next Z
Next Y
Next X
msgbox "Повторов: " & N & " раз."
-
Orastar
-
- Начинающий

-
-
- Сообщения: 17
- Зарегистрирован: 29.11.2004 (Пн) 15:41
Orastar » 09.12.2004 (Чт) 10:41
Так работает но считает все совпадения, а нужно чтобы считал сопадения в каждой строчке и вывел максимальное кол-во совпадений.
-
TEH3OP
-
- Продвинутый пользователь

-
-
- Сообщения: 143
- Зарегистрирован: 12.12.2003 (Пт) 20:19
- Откуда: Москва
TEH3OP » 10.12.2004 (Пт) 11:34
Orastar писал(а):Так работает но считает все совпадения, а нужно чтобы считал сопадения в каждой строчке и вывел максимальное кол-во совпадений.
Дык максимальным будет 5.
А сравнивать мона так:
- Код: Выделить всё
Option Explicit
Public Sub Main()
Dim alngTestPattern(4) As Long
Dim alngTestSource(4, 100) As Long
Dim k As Long
Dim m As Long
VBA.Randomize
For k = 0 To 4
alngTestPattern(k) = VBA.Rnd() * &H7FFFFFFF
Next k
For m = 0 To 100
For k = 0 To 4
alngTestSource(k, m) = VBA.Rnd() * &H7FFFFFFF
Next k
Next m
Dim lngCompareResult As Long
lngCompareResult = MatrixCompare(alngTestSource, alngTestPattern)
m = VBA.Rnd() * 100
For k = 0 To 4
alngTestPattern(k) = alngTestSource(k, m)
Next k
lngCompareResult = MatrixCompare(alngTestSource, alngTestPattern)
End Sub
Private Function MatrixCompare(ByRef iSource() As Long, ByRef iPattern() As Long) As Long
Dim alngSource() As Long
Dim alngPattern() As Long
Dim lngUboundPattern As Long
Dim lngUboundSource As Long
Dim lngReturn As Long
alngPattern = iPattern
alngSource = iSource
lngUboundPattern = UBound(alngPattern)
lngUboundSource = UBound(alngSource, 2)
Dim k As Long
Dim m As Long
Dim lngTMP As Long
For k = 0 To lngUboundSource
lngTMP = 0&
For m = 0 To lngUboundPattern
If alngPattern(m) = alngSource(m, k) Then
lngTMP = lngTMP + 1&
End If
Next m
If lngTMP > lngReturn Then
lngReturn = lngTMP
End If
If lngReturn - 1& = lngUboundPattern Then
Exit For
End If
Next k
MatrixCompare = lngReturn
End Function
PS: Чёта толком неясно, чего тебе считать надо?
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: Google-бот, PetalBot, SemrushBot, Yandex-бот и гости: 16