Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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 Base 1
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 Base 1     'индексировать матрицу по человечески с 1, а не с 0 как у машин
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-сайт: sharpc.livejournal.com
 Профиль | | #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 поетому пока что тяжело..до этого никогда не сталкивался с программированием...спасибо за квадрат :)))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам