Alocação - exercício 3 - noturno

Alocação - exercício 3 - noturno

by Gustavo Bighellini Machado Gonçalves Martins -
Number of replies: 7

No exercício 3, temos que devolver a matriz produto.....para alocá-la, temos que fazer dinamicamente ou podemos utilizar define?

int C[N][H]; ??? /*matriz C eh nxh*/

In reply to Gustavo Bighellini Machado Gonçalves Martins

Re: Alocação - exercício 3 - noturno

by Rúben Reis -
Pelo que o Alexandre disse, temos que devolver um **int então teria sim que alocar.
Em anexo segue um esboço de como ficaria o código.
In reply to Rúben Reis

Re: Alocação - exercício 3 - noturno

by Robson Santos Sousa -
Aproveitando o topico...

Fiz la minha função e tal, e funciona. Problema é na hora que eu vou fazer o teste, saka só:

int** multMatrix(int** A, int** B, int n, int m, int h){
int** C;
// faz a coisa toda...
return C;
}

OK, dai fiz a main pra testar:

int main(){
int n, m, h;
int a[2][2], b[2][2];
int** c;

// le n, m e h
c = multMatrix(a,b,n,m,h);
// printa a matriz
return 0;
}

O problema no codigo acima é que o compilador diz que eu to passando argumentos a e b invalidos. Porem se eu alocar a e b dinamicamente funciona.
Pergunta:
Como eu faria pra passar a e b pra função multMatrix sem precisar alocar dinamicamente...???
In reply to Robson Santos Sousa

Re: Alocação - exercício 3 - noturno

by Thiago Ganzarolli -
Huun, posso estar enganado, mas acho que é só fazer um cast para int**

Abs.,
In reply to Thiago Ganzarolli

Re: Alocação - exercício 3 - noturno

by Arthur Gabriel de Santana -
A resposta curta é: você é obrigado a alocar dinamicamente.

A resposta longa: matrizes estáticas e dinâmicas têm disposições diferentes na memória. Considere, por exemplo, a matriz seguinte:
1 2
3 4

Se ela for alocada dinamicamente em um int**, teremos na memória algo como
[a b] .......... [(endereço a) 1 2] ........... [(endereço b) 3 4]

Já no caso de uma matriz estática, seria algo como [ 1 2 3 4 ].
In reply to Arthur Gabriel de Santana

Re: Alocação - exercício 3 - noturno

by Robson Santos Sousa -
puts...é mesmo.

Na matriz estática os dados são alocados sequencialmente.
Ja a matriz dinâmica é um ponteiro pra um vetor de ponteiros, e cada ponteiro deste vetor aponta pra um local separado na memoria.

valew...
In reply to Gustavo Bighellini Machado Gonçalves Martins

Re: Alocação - exercício 3 - noturno

by Thiago Ganzarolli -
Como n e m são dimensões variáveis e não constantes, você também tem que alocar dinamicamente a matriz do resultado.