Alocação - exercício 3 - noturno

Alocação - exercício 3 - noturno

por Gustavo Bighellini Machado Gonçalves Martins -
Número de respostas: 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*/

Em resposta à Gustavo Bighellini Machado Gonçalves Martins

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

por 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.
Em resposta à Rúben Reis

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

por 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...???
Em resposta à Robson Santos Sousa

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

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

Abs.,
Em resposta à Thiago Ganzarolli

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

por 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 ].
Em resposta à Arthur Gabriel de Santana

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

por 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...
Em resposta à Gustavo Bighellini Machado Gonçalves Martins

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

por 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.