MATRIZ

CISCO 31/03/2014 09:07:15
#436701
A minha professora pediu para fazer um exercício que multiplicasse todos os elementos da matriz não nulos.

o módulo que utilizei para ler a matriz:
Public Function lermatriz() As Double(,)
Dim n, m As Integer
Dim x(,) As Double
n = Val(InputBox([Ô]nº de linhas=[Ô]))
m = Val(InputBox([Ô]nº de colunas=[Ô]))
ReDim x(n, m)
For i = 1 To n
For j = 1 To m
x(i, j) = Val(InputBox([Ô]([Ô] & i & [Ô],[Ô] & j & [Ô])[Ô]))
Next
Next
Return x
End Function

o programa em si:
Dim x(,) As Double
Dim mult As Double
mult = 1
x = lermatriz()
For i = 1 To UBound(x, 1)
For j = 1 To UBound(x, 2)
If x(i, j) <> 0 Then
mult = mult * x(i, j)
End If
Next
Next
MsgBox(mult)

o programa lê a matriz correctamente, mas ao multiplicar apenas multiplica o maior valor da matriz por 1, e ignora os outros valores
alguém me pode ajudar a perceber onde está o erro
obrigado
TUNUSAT 31/03/2014 11:08:08
#436704
Resposta escolhida
Mas CISCO,

Desculpe ...
... está multiplicando po 1 mesmo!
veja: [Ô]mult = 1[Ô]

Geralmente quando a gente multiplica uma matriz é por outra ...
... mas pode-se multiplicar cada elemento da raiz por um número específico.

Qual valor que está ignorando?!?
O que você quer que o programa faça?

[][ô]s,
Tunusat.

CISCO 31/03/2014 11:41:02
#436705
Eu sei... é suposto o programa ver todos os valores da matriz e multiplicar todos os valores diferentes de 0, por exemplo:

2 3
3 0

a resposta da msgbox deveria de ser 3*3*2=18

mas em vez de fazer isso multiplica 1 pelo ultimo numero (excepto 0), neste caso, 1*3=3
Tópico encerrado , respostas não são mais permitidas