Olá,
estou com uma dúvida em um exercicio sobre matrizes e aritmetica de ponteiros. A questãoo pede para trocar as notações X[ i ][ j ] , por exemplo , para utilizar a notação -------- >>> *(X + i * ncolunas + j) (não entendi essa notação e procurando na internet nao encontrei nada a respeito). Comecei a programar esse ano e ainda não entendi muito bem o assunto ponteiros , principalmente como representá-los utilizando vetores e matrizes. A questao e uma simples multiplicação de matrizes utilizando uma função, que eu já fiz. Aqui está o código.
#include <stdio.h>
void LerMatriz(float *x,int n, int m){
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++){
printf("Elemento [%d][%d] = ",i,j);
scanf("%f", (x+(i*m)+j));
}
}
void EscreverMatriz(float *x,int n, int m){
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++){
printf("%6.2f",*(x+(i*m)+j));
printf("\n");
}
}
void MultiplicarMatriz(float *x, float *y, float *z, int n, int m, int l){
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<l;j++){
*(x+(i*l)+j) = 0;
for(k=0;k<m;k++)
*(x+(i*m)+j) = *(x+(i*m)+k) * *(x+(k*m)+j);
}
}
int main(){
float *a,*b,*c;
int m,n,l;
puts("de 3 valores inteiros n,m e l:\n");
scanf("%d %d %d",&n,&m,&l);
puts("Digite a primeira matriz:");
LerMatriz(a,n,m);
puts("Digite a segunda matriz:");
LerMatriz(*b,m,l);
EscreverMatriz(*a,n,m);
EscreverMatriz(*b,m,l);
MultiplicarMatriz(*a,*b,*c,n,m,l);
puts("Matriz produto\n");
EscreverMatriz(*c,n,l);
return 0;
}
Parece algo simples, mas n sei se quando utilizo os ponteiros ainda preciso declarar os vetores ou não.
Alguém poderia dar uma ajuda??