Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2009, 15:49   #1
pafnutic
 
Регистрация: 03.10.2008
Сообщений: 7
По умолчанию Процедуры на VBA

Не знаю как написать процедуру на VBA, которая сравнивает столбцы квадратной матрицы 3-го порядка. Сравнение i-го и j-го столбца оформить в виде функции (должна возвращать True – при совпадении столбцов, False – в противном случае). Столкнулся в первый раз, но очень срочно надо. Всем заранее спасибо.
pafnutic вне форума Ответить с цитированием
Старый 15.04.2009, 17:39   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
сравнивает столбцы квадратной матрицы 3-го порядка.
напомните мне, пожалуйста, а что такое матрица 3-го порядка ???
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.04.2009, 17:42   #3
pafnutic
 
Регистрация: 03.10.2008
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
напомните мне, пожалуйста, а что такое матрица 3-го порядка ???
Матрица третьего порядка - матрица размером 3 на 3 (тоесть состоит из 9 элементов)
Для ввода использовал такой код:
Sub List6_18()
Dim Int_Array(1 To 3, 1 To 3) As Integer
Dim str_msg As String
Dim i As Integer
Dim j As Integer
str_msg = ""
For i = 1 To 3
For j = 1 To 3
Int_Array(i, j) = InputBox("Введите A(" & i & "," & j & ")", "Ввод элементов массива")
Next j
Next i
For i = 1 To 3
For j = 1 To 3
str_msg = str_msg & Format(Int_Array(i, j), "@@@@@")
Next j
str_msg = str_msg & Chr(13) 'перевод строки
Next i
MsgBox "Введено: " & Chr(13) & str_msg, , "Вывод ранее введенного массива"
End Sub
pafnutic вне форума Ответить с цитированием
Старый 15.04.2009, 19:15   #4
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Сравнение (в VBA для Word) столбцов прямоугольной матрицы любой размерности

Унифицировал программу для матриц любого порядка и с любыми элементами. (Прямоугольных, разумеется.)

Код:
Sub ICompareColumns() 'сравнивает столбцы матрицы razmerX на razmerY, изображённой в виде таблицы Word'

Dim razmerX As Integer, razmerY As Integer
Dim i As Integer, j As Integer, k As Integer
    razmerX = ActiveDocument.Tables(1).Columns.Count      'запоминаем количество столбцов'
    razmerY = ActiveDocument.Tables(1).Rows.Count       'запоминаем количество строк'
ReDim столбец(1 To razmerX) As String           'задали размерность массива для столбцов'

    For i = 1 To razmerX
        For k = 1 To razmerY - 1
        ActiveDocument.Tables(1).Cell(k, i).Select  'выделили k-й эл-т столбца i'
        Selection.MoveLeft Extend:=wdExtend                 'сняли выделение с символа ячейки таблицы'
        столбец(i) = столбец(i) & Trim(Selection.Text)   'добавили выделенное в переменную столбец(i)'
        Next
    Next
    
    For i = 1 To razmerX - 1
        For j = i + 1 To razmerX
        If столбец(i) = столбец(j) Then MsgBox "Столбцы " & i & " и " & j & " одинаковы."
        Next
    Next

End Sub
Сравнение не стал выносить в отдельную процедуру. Оно и так прекрасно работает.
Вложения
Тип файла: doc AnyMatrix.doc (45.5 Кб, 20 просмотров)

Последний раз редактировалось Sasha_Smirnov; 16.04.2009 в 19:15. Причина: настройка программы для любых элементов матриц любой размерности.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 15.04.2009, 20:27   #5
pafnutic
 
Регистрация: 03.10.2008
Сообщений: 7
По умолчанию

Помогло, но нельзя ли это отобразить не в word, а в Excell средствами VBA?
pafnutic вне форума Ответить с цитированием
Старый 15.04.2009, 20:58   #6
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Если вам так срочно надо — обратитесь скорей сюда!

Но в Excel всё будет очень компактно и менее понятно, хотя кому как.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 16.04.2009, 11:49   #7
pafnutic
 
Регистрация: 03.10.2008
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Если вам так срочно надо — обратитесь скорей сюда!

Но в Excel всё будет очень компактно и менее понятно, хотя кому как.
Так мне и надо компактно и с помощью функции и к тому же в Excal. Сделал вот так, но надо уместить в функцию.
Код:
Sub List6_18()
Dim Int_Array(1 To 3, 1 To 3) As Integer
Dim st(1 To 3, 1 To 3) As Integer
Dim str_msg As String
Dim str_msg1 As String
Dim str_msg2 As String
Dim str_msg3 As String
Dim i As Integer
Dim j As Integer
str_msg = ""
str_msg1 = ""
str_msg2 = ""
str_msg3 = ""
For i = 1 To 3
For j = 1 To 3
Int_Array(i, j) = InputBox("Введите A(" & i & "," & j & ")", "Ввод элементов массива")
Next j
Next i
For i = 1 To 3
For j = 1 To 3
str_msg = str_msg & Format(Int_Array(i, j), "@@@@@")
Next j
str_msg = str_msg & Chr(13) 'перевод строки
Next i
MsgBox "Введено: " & Chr(13) & str_msg, , "Вывод ранее введенного массива"

For i = 1 To 3
str_msg1 = str_msg1 & Format(Int_Array(i, 1), "@@@@@")
Next i

For i = 1 To 3
str_msg2 = str_msg2 & Format(Int_Array(i, 2), "@@@@@")
Next i

For i = 1 To 3
str_msg3 = str_msg3 & Format(Int_Array(i, 3), "@@@@@")
Next i

If str_msg1 = str_msg2 Then
MsgBox "Столбец 1 совпадает со столбцом 2"
Else
MsgBox "Столбец 1 не совпадает со столбцом 2"
End If

If str_msg1 = str_msg3 Then
MsgBox "Столбец 1 совпадает со столбцом 3"
Else
MsgBox "Столбец 1 не совпадает со столбцом 3"
End If

If str_msg2 = str_msg3 Then
MsgBox "Столбец 2 совпадает со столбцом 3"
Else
MsgBox "Столбец 2 не совпадает со столбцом 3"
End If
End Sub
pafnutic вне форума Ответить с цитированием
Старый 16.04.2009, 19:58   #8
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Жаль, что вчерашний пост не отредактировать! Там первый «- 1» лишний!
Код:
For k = 1 To razmerY - 1
на самом деле должен быть таким:
Код:
For k = 1 To razmerY
Нужно ли это уточнение, не знаю. Оцените его, пожалуйста, как-нибудь.
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуры perojenko Паскаль, Turbo Pascal, PascalABC.NET 3 23.01.2009 10:42
Процедуры Hot sunny day Паскаль, Turbo Pascal, PascalABC.NET 4 13.11.2008 14:11
Запуск процедуры из процедуры с дополнением 1sal1 Общие вопросы Delphi 3 06.10.2008 21:54
процедуры Killbrum Помощь студентам 5 10.06.2008 08:59