› Foros › PC › Software libre
int **a;
int i,j;
a =(int **) malloc (sizeof(int*)*3);
for(i=0;i<3;i++)
a[i]=(int*)malloc(sizeof(int)*);
for(i=0;i<3;i++)
for(i=0;i<3;j++)
a[i][j]=b[i][j];
#include <stdlib.h>
#include <stdio.h>
int main (void){
int a[3][3], b[3][3];
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if((i+1) % (j+1) == 0)
a[i][j]=i+j; //Relenamos la matriz con numers distintos.
else
a[i][j]=5+i;
}
}
printf("Matriz A \n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%i ", a[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
b[i][j]=a[i][j];
}
}
printf("Matriz b \n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%i ", b[i][j]);
}
printf("\n");
}
return 0;
}
./main
Matriz A
0 5 5
1 2 6
2 7 4
Matriz b
0 5 5
1 2 6
2 7 4
nu_kru escribió:Puedo estar un poco dormido y no me apetece comprobarlo, pero que haces para reservar memoria?
El primer malloc, crea espacio para 3 punteros a int, y el segundo malloc hace que cada puntero a int apunte a un espacio generado con el tamaño de int?
no es demasiado complicarse la vida? y además solo generas espacio para 3 int, no 9... que vete a saber donde está escribiendo?
De todas formas si no pones el codigo entero, dificil lo tenemos para sacarte el fallo.. porque si luego recorres la matriz al revés para ver el resultado y te salen los valores cambiados.. pues es normal.
a = malloc(cols * rows * sizeof(*a));
a_ij = a[i * cols + j];
int **m,**g;
int i;
m = (int **)malloc(sizeof(int*)*SIZE);
for(i=0; i<SIZE ; i++)
m[i] = (int *) malloc(sizeof(int)*SIZE);
MatrizP(m, SIZE);
g = (int **)malloc(sizeof(int*)*SIZE);
for(i=0; i<SIZE ; i++)
g[i] = (int *) malloc(sizeof(int)*SIZE);
MG(0, 0, SIZE, m, g);
void MatrizP(int **m,int n){
int i,j;
srand(time(0));
for(i=0; i<n ;i++)
for(j=0; j<n ; j++){
m[i][j] = rand() % 10;
}
}
int MG(int x,int y, int tam, int **p, int **g){
if(x>=0 && x<tam){
if(y==0){
if(g[x][y]!=p[x][y]){
g[x][y]=p[x][y];
ImprimirMatriz(g, tam);
printf("-----------\n");
x++;
if(x<tam)
MG(x, y, tam, p, g);
else
MG(0, y+1, tam, p, g);
}
else
return g[x][y];
}
else
g[x][y] = p[x][y]+ Max(MG(x-1, y-1, tam, p, g),MG(x, y-1, tam, p, g),MG(x+1, y-1, tam, p, g));
}
else
return -1;
}
void ImprimirMatriz(int **m,int n){
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%d ",m[i][j]);
printf("\n");
}
}