Страница: 1 |
Страница: 1 |
Вопрос: Помогите пожалустай ...
Добавлено: 26.05.08 18:23
Автор вопроса: stelleons
Необходимо написать программу составления латинского квадрата. Латинский квадрат - матрица размерностью NxN, элементы которой выбраны от 1 до N так, что каждое число встречается только один раз в каждой строке и в каждом столбце. (N вводится по запросу программы. Все строки матрицы формируются подпрограммой)...Только прогу надо писать на в VBA а просто в VB...сделайте если не трудно...
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #1
Добавлено: 26.05.08 19:31
Не трудно, но есть пара вопросов.
Если не в VBA то
1. зачем тогда вопрос написал в этот раздел?
2. куда выводим матрицу? Или без разницы?
Номер ответа: 2
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #2
Добавлено: 26.05.08 20:00
Sub CreateLatinSquare(LatinSquare, nSize As Integer) 'подпрограмма принимает переменную неопределенного типа Variant
'для сохранения в ней матрицы и размер будущей матрицы LatinSquare
Dim X As Integer, Y As Integer 'объявление необходимых переменных
ReDim LatinSquare(nSize, nSize) 'создание пустой матрицы размерностью NxN
For Y = 1 To nSize 'цикл прохождения строк матрицы
For X = 1 To nSize 'цикл прохождения столбцов матрицы
LatinSquare(X, Y) = (X + Y) - 1 'занесение значения в ячейку матрицы
Next X, Y 'завершение циклов в указанном порядке
End Sub
Подпрограмма создания матрицы размерностью NxN отвечающей правилам Латинского квадрата
Номер ответа: 3
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #3
Добавлено: 26.05.08 20:06
Option Explicit
это надо написать в самом вверху кода до подпрограммы.
Номер ответа: 4
Автор ответа:
Holsten
Вопросов: 5
Ответов: 100
Профиль | | #4
Добавлено: 26.05.08 20:10
Smith, Кол-во значений не должно превышать N
Номер ответа: 5
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #5
Добавлено: 26.05.08 20:13
Option Explicit 'требовать явного объявления переменных
это надо написать в самом вверху кода до подпрограммы.
Номер ответа: 6
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #6
Добавлено: 26.05.08 20:17
Память реально дырявая, щас вспомнил что это за квадрат.
Тутже кто-то недавно что-то такое делал.
Номер ответа: 7
Автор ответа:
stelleons
Вопросов: 2
Ответов: 7
Профиль | | #7
Добавлено: 26.05.08 22:45
Спасиб ребят
Номер ответа: 8
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #8
Добавлено: 27.05.08 00:30
За что спасибо? Решение то неправильное, блин.
Номер ответа: 9
Автор ответа:
stelleons
Вопросов: 2
Ответов: 7
Профиль | | #9
Добавлено: 27.05.08 09:41
А как правильно тада??
Номер ответа: 10
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #10
Добавлено: 27.05.08 11:39
Option Base 1 'индексировать матрицу по человечески с 1, а не с 0 как у машин
Option Explicit 'требовать явного объявления переменных
Public Sub CreateLatinSquare(LatinSquare, nSize As Integer) 'подпрограмма принимает переменную неопределенного типа Variant
для сохранения в ней матрицы и размер будущей матрицы LatinSquare
Dim X As Integer, Y As Integer, nVal As Integer 'объявление необходимых переменных
ReDim LatinSquare(nSize, nSize) 'создание пустой матрицы размерностью NxN
For Y = 1 To nSize 'цикл прохождения строк матрицы
For X = 1 To nSize 'цикл прохождения столбцов матрицы
nVal = (X + Y) - 1 'вычисление значения
If nVal > nSize Then nVal = nVal - nSize 'ограничение значения в пределах N
LatinSquare(X, Y) = nVal 'занесение значения в ячейку матрицы
Next X, Y 'завершение циклов в указанном порядке
End Sub
Public Sub ShowLatinSquare(LatinSquare, nSize As Integer) 'подпрограмма отображает матрицу
Dim X As Integer, Y As Integer
For Y = 1 To nSize
For X = 1 To nSize
Cells(Y, X) = LatinSquare(X, Y) 'копирование ячейки матрицы в ячейку листа Excel
Next X, Y
End Sub
Номер ответа: 11
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #11
Добавлено: 27.05.08 11:44
ShowLatinSquare это естественно для VBA, а в VB всё зависит от того, куда ты будешь выводить матрицу.
1. прямо на форму
2. в какой-нибудь Box
3. в ListView как таблицу
это дело твоё
Номер ответа: 12
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #12
Добавлено: 28.05.08 09:14
Куда пропал студент?
В VB выбрал вариант?
Как зовут тебя?
На кого учимся?
Где благодарности?
Номер ответа: 13
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #13
Добавлено: 28.05.08 10:28
По-человечески - это с нуля.
Номер ответа: 14
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #14
Добавлено: 28.05.08 10:38
Люди считаю с 1, а математики с нуля
Номер ответа: 15
Автор ответа:
stelleons
Вопросов: 2
Ответов: 7
Профиль | | #15
Добавлено: 28.05.08 15:38
Куда пропал студент?
В VB выбрал вариант?
Как зовут тебя?
На кого учимся?
Где благодарности?
Учусь на защиту информации....просто тока начал изучать VBA поетому пока что тяжело..до этого никогда не сталкивался с программированием...спасибо за квадрат ))