powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создать вектор, содержащий суммы элементов строк массива
9 сообщений из 9, страница 1 из 1
Создать вектор, содержащий суммы элементов строк массива
    #36014487
SoAndSo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дана матрица A(5,5). Получить из нее вектор, содержащий суммы элементов строк. Отсортировать его в порядке убывания элементов. Создать подпрограмму для вычисления суммы элементов строк.

Очень хочу помочь подруге решить, но ничего не получается. Обе сидим и думаем. Пока надумали на это. Но программа неправильно выдает s1 s2 и s3. Пока что мы пытаемся найти сумму. Помогите, пожалуйста, подскажите где ошибки

Dim A(2, 2) As Variant
Private Sub Form_Load()
Dim A(2, 2) As Integer, S1 As Integer, S2 As Integer, S3 As Integer
Show
For i = 0 To 2
For J = 0 To 2
A(i, J) = Int(3 * Rnd + 1)
Picture1.Print A(i, J);
Next J
Picture1.Print
Next i

si = SUMMA(A, 2, 2)
S2 = SUMMA(A, 2, 2)
S3 = SUMMA(A, 2, 2)
Text1 = S1
Text2 = S2
Text3 = S3
End Sub

Function SUMMA(A, m, n)
SUMMA = 0
For J = 0 To n
SUMMA = SUMMA + A(i, J)
Next J

End Function
...
Рейтинг: 0 / 0
Создать вектор, содержащий суммы элементов строк массива
    #36014505
SoAndSo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дана матрица A(2,2)*
...
Рейтинг: 0 / 0
Создать вектор, содержащий суммы элементов строк массива
    #36014590
SoAndSo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сами спросили - сам решили :)
Может быть кому-нибудь понадобится:

Option Explicit

Private Sub Form_Load()
Dim i%, j%, m%, z%, Max%
Dim A(5, 5) As Integer, B(5) As Integer, S1 As Integer, S2 As Integer, S3 As Integer, S4 As Integer, S5 As Integer
Show '?
For i = 0 To 4
For j = 0 To 4
A(i, j) = Int(4 * Rnd + 1)
Picture1.Print A(i, j);
Next j
Picture1.Print
Next i

S1 = SUMMA(A, 0) ', 2)
S2 = SUMMA(A, 1) ', 2)
S3 = SUMMA(A, 2) ', 2)
S4 = SUMMA(A, 3) ', 2)
S5 = SUMMA(A, 4) ', 2)
Text1 = S1
Text2 = S2
Text3 = S3
Text4 = S4
Text5 = S5


For j = 0 To 4
'B(j) = 0 'присвоение начального значения
'элемента вектора For / = / То 5
B(j) = B(j) + SUMMA(A, j) 'вычисление суммы в цикле Next / Next J
Picture2.Print B(j);
Next j


For i = 0 To 4 'начало цикла
'нахождение максимума
Max = B(i)
For j = i To 4
If B(j) > Max Then
Max = B(j) ' определение максимума
z = j 'присвоение переменной значения
End If
Next j
'сортировка
B(z) = B(i)
B(i) = Max
Picture3.Print Max
Next i 'конец цикла
End Sub

Function SUMMA(A, m) ', n) ?
Dim j%
'SUMMA = 0 '???
For j = 0 To 4 'n ?
SUMMA = SUMMA + A(m, j)
Next j
End Function
...
Рейтинг: 0 / 0
Создать вектор, содержащий суммы элементов строк массива
    #36015106
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помнится несколько дней назад оставалась одна задача до зачета :)
Вряд ли кому здесь пригодится решение, это все-таки не студенческий форум, а профессиональный.
Но вы молодец, что смогли самостоятельно разобраться. Надеюсь это вам еще пригодится.
...
Рейтинг: 0 / 0
Создать вектор, содержащий суммы элементов строк массива
    #36015115
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: SoAndSo
> Сами спросили - сам решили :)
Пока писал ответ, вы уже сам с усами.

Но все равно прочитай рекомендации, и постарайся скорректировать свой код согласно им

Код: 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.
' Во первых, вырабатывай привычку ставить эту команду
' или постав птицу в меню Tools -> Option - Require Variable Declaration
Option Explicit

' Это у тебя переменная-массив уровня модуля, а ты её нигде не используешь
' потому, что у тебя объявлена одноименная локальная переменная уровня функции в одном месте
' и параметр в другом.
' Для того чтобы обратится именно к этому масиву, нужно указать Me и через точку имя масива
' Напимер так: Me.A(1,1)
Dim A( 2 ,  2 ) As Variant

Private Sub Form_Load()
Dim A( 2 ,  2 ) As Integer, S1 As Integer, S2 As Integer, S3 As Integer
Dim i As Long, j As Long
'Show
' А кто будет объявлять переменные счетчиков циклов?
For i =  0  To  2 
    For j =  0  To  2 
        A(i, j) = Int( 3  * Rnd +  1 )
'        Старайся избегать неявных преобразований и используй явные
        Picture1.Print CStr(A(i, j));
    Next j
    Picture1.Print
Next i
' Одна из ошибок в банальной опечатке. Переменная si нигде больше не используется
'si = SUMMA1(A, 2, 2)
S1 = SUMMA1(A) ', 2, 2)
'S2 = SUMMA(A, 2, 2)
'S3 = SUMMA(A, 2, 2)
'Старайся избегать использовать свойства по умолчанию, указывай всегда явно
'От тебя не убудет, но потом намного проще понять о чем идет речь
' И не забываем о явных преобразованиях
Text1.Text = CStr(S1)
Text2.Text = CStr(S2)
Text3.Text = CStr(S3)
End Sub

' указывай типы передаваемых значений и тип возвращаемого значения
' Для масива, размерности не обязательно передавать, есть функции определяющие это
' UBound(Имя массива, номер размерности) вернет верхную границу
' LBound(Имя массива, номер размерности) вернет нижную границу
Function SUMMA(A() As Integer) As Integer
'Не забываем объявлять переменные счетчиков циклов
Dim j As Long, i As Long
SUMMA1 =  0 
For j = LBound(A) To UBound(A)
    For i = LBound(A,  2 ) To UBound(A,  2 )
        SUMMA1 = SUMMA1 + A(i, j)
    Next i
Next j
End Function

'И ещё немного, старайся избегать типа Integer, потому, что он может содержать значение от -32768 до 32767
'и на операциях умножения очень легко "вылезть" за максимальное значение и получить ошибку переполнения.
'И старайся не использовать тип Variant, с ним конечно проще начинать,
'но он очень отрицательно сказывается на быстродействии и расходе памяти

> Может быть кому-нибудь понадобится:
А вот это врядли, тут у каждого такого добра хватает


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Создать вектор, содержащий суммы элементов строк массива
    #36015962
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь, вы святой!
...
Рейтинг: 0 / 0
Создать вектор, содержащий суммы элементов строк массива
    #36015973
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: FAndrew
> Игорь, вы святой!

э...э...
В смысле?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Создать вектор, содержащий суммы элементов строк массива
    #36018687
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Вы не только решили проблему, но и все подробно разжевали, дали подробные комментарии как лучше писать программы и т.д.
И это все только для зачета.
Что и вызвало мое восхищение.
...
Рейтинг: 0 / 0
Создать вектор, содержащий суммы элементов строк массива
    #36018717
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: FAndrew
> Игорь Горбонос,
>
> Вы не только решили проблему, но и все подробно разжевали, дали подробные комментарии как лучше писать программы
> и т.д.
> И это все только для зачета.

Я работаю программистом, но сначала писал на С++, теперь пишу на ФоксПро и к большому моему огорчению не писал на
VB(мелкие поделки не в счет) и теперь врядли что-то напишу . Хотя очень его люблю и это был первый изученый мной
язык и мне обидно за учеников, которым нерадивые преподаватели, прочитавшие "VB для чайников", ничего не понявшие в
этом, дают задания и оценивают решения. Они этим самым формируют будущих специалистов, у которых отношение будет
таким-же. Вот на этом и держится миф о "языке для домохозяек"! А так может хоть кто-нибудь изменит свое отношение. И
хочу хоть чему-то научить, что-бы когда-нибудь можно было разговаривать с теперешними студентами не с позиции
"объяснения прописных истин", а с позиции "у человека интересная и нетривиальная проблема, это интересно".

З.Ы. Наверное пора в отпуск


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создать вектор, содержащий суммы элементов строк массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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