Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создать вектор, содержащий суммы элементов строк массива / 9 сообщений из 9, страница 1 из 1
28.05.2009, 21:42
    #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
28.05.2009, 21:58
    #36014505
SoAndSo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать вектор, содержащий суммы элементов строк массива
Дана матрица A(2,2)*
...
Рейтинг: 0 / 0
28.05.2009, 23:29
    #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
29.05.2009, 10:44
    #36015106
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать вектор, содержащий суммы элементов строк массива
Помнится несколько дней назад оставалась одна задача до зачета :)
Вряд ли кому здесь пригодится решение, это все-таки не студенческий форум, а профессиональный.
Но вы молодец, что смогли самостоятельно разобраться. Надеюсь это вам еще пригодится.
...
Рейтинг: 0 / 0
29.05.2009, 10:46
    #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
29.05.2009, 15:04
    #36015962
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать вектор, содержащий суммы элементов строк массива
Игорь, вы святой!
...
Рейтинг: 0 / 0
29.05.2009, 15:07
    #36015973
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать вектор, содержащий суммы элементов строк массива
> Автор: FAndrew
> Игорь, вы святой!

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


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

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

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

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


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


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