Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / срооочно нужна помощь по задачам на массивы плииз / 3 сообщений из 3, страница 1 из 1
05.07.2008, 17:02
    #35413023
Henry14
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
срооочно нужна помощь по задачам на массивы плииз
буду по гроб жизни благодарен, если поможете с задачами:

1) Из матрицы сформировать одномерный массив, каждый элемент вычислить как произведение положительных эл-ов соотв-их с/б матрицы

2) Из матрицы сформировать одномерный массив, каждый элемент которого вычислить как произведение элементов соответствующей строки матрицы, лежащих на главной диагонали и правее неё

3) После первого положительного элемента каждого столбца матрицы вставить максимальный элемент столбца
...
Рейтинг: 0 / 0
06.07.2008, 16:17
    #35413533
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
срооочно нужна помощь по задачам на массивы плииз
Модератор:
Флуд удален.


...
Рейтинг: 0 / 0
06.07.2008, 20:29
    #35413725
FattyHallex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
срооочно нужна помощь по задачам на массивы плииз
Пробуй, накидал наспех, так что поверяй

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
Option Explicit


Sub test()
Dim ar( 0  To  3 ,  0  To  3 ) As Long
Dim i As Long, m As Long, k As Long
Dim a, b, c, d
a = Array( 5 ,  2 ,  3 , - 4 )
b = Array(- 6 ,  3 , - 3 ,  5 )
c = Array( 5 , - 6 ,  7 , - 2 )
d = Array(- 4 , - 3 , - 5 , - 2 )

For m =  0  To  3 
ar( 0 , m) = a(i)
i = i +  1 
Next
i =  0 
For m =  0  To  3 
ar( 1 , m) = b(i)
i = i +  1 
Next
i =  0 
For m =  0  To  3 
ar( 2 , m) = c(i)
i = i +  1 
Next
i =  0 
For m =  0  To  3 
ar( 3 , m) = d(i)
i = i +  1 
Next

'1) Из матрицы сформировать одномерный массив, каждый элемент вычислить как произведение 'положительных эл-ов соотв-их с/б матрицы


Dim res As Variant
res = MultColumns(ar)
'
'2) Из матрицы сформировать одномерный массив, каждый элемент которого вычислить как 'произведение элементов соответствующей строки матрицы, лежащих на главной диагонали и 'правее неё


Dim cols As Variant
cols = MultAfterDiagonal(ar)
'3) После первого положительного элемента каждого столбца матрицы вставить максимальный 'элемент столбца
Dim aps As Variant
aps = AppendMaxInRow(ar)

End Sub

Private Function MultColumns(v As Variant) As Variant
ReDim ret(LBound(v,  2 ) To UBound(v,  2 )) As Variant
Dim i As Long
Dim j As Long
Dim cnt As Long
For j = LBound(v,  2 ) To UBound(v,  2 )
Dim tmp
tmp =  1 
For i = LBound(v,  1 ) To UBound(v,  1 )
If v(i, j) >  0  Then
tmp = tmp * v(i, j)
End If
Next
ret(cnt) = tmp
cnt = cnt +  1 
Next
MultColumns = ret

End Function

Function Maximum(ar As Variant) As Variant

    Dim i As Integer, maxi As Variant
    maxi = Null
    For i =  0  To UBound(ar)
        If IsNull(maxi) Then
            maxi = ar(i)
        ElseIf Not IsNull(ar(i)) Then
            If maxi < ar(i) Then
                maxi = ar(i)
            End If
        End If
    Next i
    Maximum = maxi
    
End Function

Private Function MaxColumns(v As Variant) As Variant
If IsNull(UBound(v,  2 )) Then Exit Function
Dim n As Integer, i As Integer, j As Integer
ReDim tmp(LBound(v,  1 ) To UBound(v,  1 )) As Variant
ReDim out(LBound(v,  2 ) To UBound(v,  2 )) As Variant
For j = LBound(v,  2 ) To UBound(v,  2 )

For i = LBound(v,  1 ) To UBound(v,  1 )
tmp(i) = v(i, j)
Debug.Print tmp(i)
Next
out(n) = Maximum(tmp)

n = n +  1 

Next
MaxColumns = out

End Function

Private Function MultAfterDiagonal(v As Variant) As Variant

 ReDim out(LBound(v,  1 ) To UBound(v,  1 )) As Variant
 Dim i As Long, j As Long, n As Long
 For i = LBound(v,  1 ) To UBound(v,  1 )
 Dim tmp
 tmp = v(i, n)
 For j = i +  1  To UBound(v,  2 )
tmp = tmp * v(i, j)
 Next
 out(n) = tmp
n = n +  1 
Next

MultAfterDiagonal = out
End Function

Private Function AppendMaxInRow(v As Variant) As Variant

Dim mx As Variant
mx = MaxColumns(v)
ReDim out(LBound(v,  1 ) To UBound(v,  1 ), LBound(v,  2 ) To UBound(v,  1 ) +  1 )

Dim i As Long, j As Long, k As Variant
For i = LBound(v,  1 ) To UBound(v,  1 )
k = Null
For j = LBound(v,  2 ) To UBound(v,  2 )
If v(i, j) >  0  Then
k = i
Exit For
End If
Next
If IsNull(k) Then
For j = LBound(v,  2 ) To UBound(v,  2 )
out(i, j) = v(i, j)
Next
Else
For j = LBound(v,  2 ) To k
out(i, j) = v(i, j)
Next
out(i, k +  1 ) = mx(i)
For j = k +  2  To UBound(v,  2 ) +  1 
out(i, j) = v(i, j -  1 )
Next
End If
Next

AppendMaxInRow = out

End Function
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / срооочно нужна помощь по задачам на массивы плииз / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]