Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: MATRIX Добавлено: 18.11.05 19:06  

Автор вопроса:  LoveSan
Есть задача по матрице: вводишь все ее элементы и надо получить новую путем деления всех элементов введенной матрицы на среднее арифм. ее побочной диагонали. Не могу найти ср. арифм. для побочной диагонали...
Вот пример для главной диагонали:

 Dim a(3, 3) As Single
Dim b(3, 3) As Single
Dim i As Integer
Dim g As Integer


Private Sub Command1_Click()
For i = 1 To 3
For g = 1 To 3
a(i, g) = Val(InputBox("Введите число", "Матрица"))
Next g
Next i
For i = 1 To 3
Print Tab; a(i, 1); a(i, 2); a(i, 3)
Next i
End Sub

Private Sub Command2_Click()
s = 0
For i = 1 To 3
For g = 1 To 3
If i = g Then s = s + a(i, g) / 3
Next g
Next i
For i = 1 To 3
For g = 1 To 3
b(i, g) = a(i, g) / s
Next g
Next i
For i = 1 To 3
Print
Print
Print b(i, 1); Tab; b(i, 2); Tab; b(i, 3)
Next i
End Sub

Private Sub Command3_Click()
Form1.Cls
End Sub

Private Sub Command4_Click()
End
End Sub

Что нужно изменить??? PLZ!!!

Ответить

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

Номер ответа: 1
Автор ответа:
 K&M



ICQ: 225442067 

Вопросов: 20
Ответов: 170
 Профиль | | #1 Добавлено: 18.11.05 20:14
For i = 1 To 3
For g = 1 To 3

Это не жизнь, это код, здесь все начинается с "нуля"!

Ответить

Номер ответа: 2
Автор ответа:
 K&M



ICQ: 225442067 

Вопросов: 20
Ответов: 170
 Профиль | | #2 Добавлено: 18.11.05 20:14
For i = 1 To 3
For g = 1 To 3

Это не жизнь, это код, здесь все начинается с "нуля"!

For i = 1 To 3
For g = 1 To 3
If i = g Then s = s + a(i, g) / 3
Next g
Next i


Ну кто так делает?

For i = 0 to 3
s = s + a(i,i)/3
Next

Ответить

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



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #3
Добавлено: 18.11.05 22:27

Это не жизнь, это код, здесь все начинается с "нуля"!
С единицы же тоже можно. Никто не запрещает. К тому же, для ясности можно написать так: Dim a(1 to 3, 1 to 3) As Single или на худой конец в начало модуля кинуть Option Base 1. Хотя это совершенно не важно - нулевые элементы, конечно, создаются, но никак не мешают (в данном случае).
For i = 0 to 3
s = s + a(i,i)/3
Next

Если матрица введена от 1 до 3, то этот код будет неправильным. Точнее, он посчитает нужное, но просто из-за того, что нулевой элемент равен нулю.

For i = 1 To 3
For g = 1 To 3
If i = g Then s = s + a(i, g) / 3
Next g
Next i

Этот код просканирует главную диагональ. А нужно - побочную.

For i = 1 to 3
    s = s + a(i, 4-i) / 3
Next i

PS. Ну и бессмысленные задания все-таки дают. Зачем может понадобиться такого рода действие - не представляю. Однако я тоже когда-то такие задачки решал. И как-то тогда эта бессмысленность не убивала. :)

Ответить

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



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #4
Добавлено: 19.11.05 18:51
если
For i = 1 To 3

то и
Dim a(1 to 3, 1 to 3) As Single  


а вообще лучше
Dim a(2, 2) As Single
For i = 0 To 2

Ответить

Страница: 1 |

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



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