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

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

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

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


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


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