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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.12.2008, 02:48   #11
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию А кому «магические квадраты»?

Option Base 1

Sub MagicalMatrix()
'печать строк чисел от 1 до N в виде таблицы
Const N = 11 'при простом N получаем «магический квадрат»
Dim m()
ReDim m(N, N)
Dim i As Byte, j As Byte, k As Byte
Dim cap As Variant 'НАДстоящий элемент матрицы
Dim even As Boolean ' = истине, когда N чётное

ActiveWindow.ActivePane.View.ShowAl l = False
'скрыли непечатаемые знаки (абзацы, табуляторы и пр.)
If MsgBox("Печать «матрицы» " & N & "*" & N & " из " & _
N & " различных чисел.", vbYesNo) = vbNo Then Exit Sub

even = (N Mod 2 = 0)

With Selection
.HomeKey unit:=wdStory 'соответствует <Ctrl>+<Home>

For j = 1 To N: m(1, j) = j: .TypeText m(1, j) & vbTab: Next j
.TypeBackspace: .TypeParagraph

For i = 2 To N

For j = 1 To N
cap = m(i - 1, j)
m(i, j) = cap + 2 + N * (cap > N - 2 - even) + even
'здесь, как и в почившем FORTH, Истина=–1, а Ложь — нулю
If N = 2 Then m(i, 1) = 2: m(i, 2) = 1: Exit For
Next j

For k = 1 To N: .TypeText m(i, k) & vbTab: Next k
.TypeBackspace
.TypeParagraph
Next i

.HomeKey unit:=wdStory, Extend:=wdExtend 'то же, что <Ctrl>+<Shift>+<Home>
.ConvertToTable 'преобразует выделенный текст в таблицу
.HomeKey 'курсор - к началу выделения
End With

SendKeys "{enter}", True 'ввод <ENTER> (для корректного продолжения)
'SendKeys выполняется только в активном окне (кроме окна программы)

End Sub

Последний раз редактировалось Sasha_Smirnov; 08.12.2008 в 12:03. Причина: учёт чётности N.
Sasha_Smirnov вне форума
Старый 09.12.2008, 07:31   #12
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Как и просили!

Sub MagicalMatrixRandom()
'печать строк чисел от 1 до N в виде случайной таблицы

Const N = 4 'а при простом N получаем «магический квадрат»
Dim m()
ReDim m(N, N)
Dim i As Byte, j As Byte, k As Byte, R As Long
Dim cap As Variant 'НАДстоящий элемент матрицы
Dim even As Boolean ' равно Истине, когда N чётное

If MsgBox("Печать «матрицы» " & N & "*" & N & " из " & _
N & " различных чисел.", vbYesNo) = vbNo Then Exit Sub

even = (N Mod 2 = 0)
R = Int((N - 1) * Rnd) 'случайное целое число из отрезка [0;N–1]

With Selection
.HomeKey unit:=wdStory 'соответствует <Ctrl>+<Home>

For j = 1 To N
m(1, j) = R + j + (R + j > N) * N 'ряд чисел первой строки
.TypeText m(1, j) & vbTab
Next j
.TypeBackspace: .TypeParagraph

For i = 2 To N

For j = 1 To N
cap = m(i - 1, j)
m(i, j) = cap + 2 + N * (cap > N - 2 - even) + even
'здесь использовано то, что в VBA Истина=–1, а Ложь — нулю
If N = 2 Then m(i, 1) = 2: m(i, 2) = 1: Exit For
Next j

For k = 1 To N: .TypeText m(i, k) & vbTab: Next k
.TypeBackspace
.TypeParagraph

Next i


.HomeKey unit:=wdStory, Extend:=wdExtend 'то же, что <Ctrl>+<Shift>+<Home> на клавишах
.ConvertToTable 'преобразует выделенный текст в таблицу
.HomeKey 'курсор - к началу выделения
End With

SendKeys "{enter}", True 'ввод <ENTER>
End Sub

Последний раз редактировалось Sasha_Smirnov; 09.12.2008 в 07:33. Причина: шрифт.
Sasha_Smirnov вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложить матрицу... Zibiv Помощь студентам 7 19.05.2009 15:51
Задача на матрицу. Fest Помощь студентам 2 16.12.2007 05:54
Задачка на матрицу. Саня895 Помощь студентам 1 11.12.2007 08:45
Как посчитать матрицу? RECREATOR Помощь студентам 8 30.11.2007 07:10