Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: помогите с подпрограммой Добавлено: 02.06.08 12:09  

Автор вопроса:  stelleons
пожалуста помогите с подпрограммой...в основной программе я создал массив, в подпрограаму передаються значения latin(), n...В подрпограаме необходимо проверить, равны ли между собой суммы элементов в каждой строке, в каждом столбце и в каждой диагонали (главная и побочная)..значения передать в основную програаму и вывести в Label

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 03.06.08 16:52
ну-с, отчего же не помочь? расскажи, в чем ступор, дай код который упел забацать

Ответить

Номер ответа: 2
Автор ответа:
 stelleons



Вопросов: 2
Ответов: 7
 Профиль | | #2 Добавлено: 06.06.08 00:44
--Âàíèíà ïîäïðîãðàììà :
Private Function PR2(Mas1() As Integer, n1, m1 As Byte)
Dim sm As Integer, kok, kok2 As Integer
Dim MasStr() As Integer, MasStlb() As Integer
'--Ïîäãîòîâêà ïåðåìåííûõ è ìàññèâîâ
sm = 0
kok = 0
kok2 = 0
ReDim MasStr(1 To n1)
ReDim MasStlb(1 To m1)
' Âû÷èñëåíèå ñóììû ñòðîê è çàíåñåíèå èõ â ìàññèâ
For i = 1 To n1
sm = 0
For j = 1 To m1
sm = Mas(i, j) + sm
Next j
MasStr(i) = sm
Debug.Print MasStr(i);
Next i
'--Ïðîâåðêà ðàâíîñòè ñóììû âñåõ ñòðîê
For i = 2 To n1
If MasStr(i) = MasStr(i - 1) Then
kok = kok + 1
End If
Next i
If kok = n1 - 1 Then
MsgBox ("Ñóììû âñåõ ñòðîê ðàâíû";)
End If
'--

For j = 1 To m1
sm = 0
For i = 1 To n1
sm = Mas(i, j) + sm
Next i
MasStlb(j) = sm
Debug.Print MasStlb(j);
Next j
'--
For j = 2 To m1
If MasStlb(j) = MasStlb(j - 1) Then
kok2 = kok2 + 1
End If
Next j
If kok2 = m1 - 1 Then
MsgBox ("Ñóììû âñåõ ñòîëáöîâ ðàâíû";)
End If
End Function

Ответить

Номер ответа: 3
Автор ответа:
 stelleons



Вопросов: 2
Ответов: 7
 Профиль | | #3 Добавлено: 06.06.08 00:45
ой что то с комментариями проблема вышла:))...я сделал тока со строками и столбцами помогите с диагоналями сделать плизик

Ответить

Номер ответа: 4
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 06.06.08 11:19
Да, была у нас такая задачка на 1 семестре, где надо все диагонали перебирать, и, помню, пропарился с ней добрых 2 часа.

смотри, как тебе нужно перебирать диагонали:

шаг один, считае снизу-слева вправо-вверх
56789A
456789
345678
234567
123456
012345


шаг два, считаем сверху-слева вправо-вниз
012345
123456
234567
345678
456789
56789A


Вот и все, каждая диагональ помечена сходными знаками (А — это десять).

Ответить

Номер ответа: 5
Автор ответа:
 stelleons



Вопросов: 2
Ответов: 7
 Профиль | | #5 Добавлено: 06.06.08 17:36
Нет ты не понял..у меня уже сформирован латинский квадрат...мнет еперь надо проверить равны ли между собой суммы в диагоналях

Ответить

Номер ответа: 6
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #6 Добавлено: 06.06.08 17:48
Эм... А нужны только главные диагонали?
Т.е. только те, что из угла в угол?

Ответить

Номер ответа: 7
Автор ответа:
 stelleons



Вопросов: 2
Ответов: 7
 Профиль | | #7 Добавлено: 06.06.08 17:56
да главная и побочная

Ответить

Номер ответа: 8
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #8 Добавлено: 06.06.08 18:32
Алгоритм для диагоналей:


    Dim d1_sum% ' summa diagonali vpravo-vniz
    Dim d2_sum% ' summa diagonali vlevo-vniz
    
    For i = 1 To m1
        d1_sum = d1_sum + Mas(i, i)
        d2_sum = d2_sum + Mas(i, m1 - i + 1)
    Next i
    
    Debug.Print (d1_sum = d2_sum) ' true/false


P.S. Не проверял.

Ответить

Номер ответа: 9
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #9 Добавлено: 07.06.08 11:37
stelleons нет, это ты меня не понял)) я тебе показал 2 квадрата где цифрами указано, в какой последовательности будут проверятся элементы матриц. ел-пасо тебе дает код, который будет осуществлять данный метод. тк. он его не проверял, то 90% он работать не будет, так что возьми на заметку его попытку, мой совет и напиши все сам))

Ответить

Страница: 1 |

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



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