Programación General => C/C++ => Mensaje iniciado por: vhgmaya en Lunes 24 de Octubre de 2005, 20:35
Título: Matrices Dinamicas
Publicado por: vhgmaya en Lunes 24 de Octubre de 2005, 20:35
#include<stdio.h> #include<stdlib.h> /*declaracion matriz*/ int *matriz; int a,b; /* decalracion variables*/ int x,y,i,j,cont=0; /*inicio*/ main() { matriz = (int *) malloc (sizeof(int)*a*B); for(x=1;x<=2;x++) { for(y=1;y<=2;y++) { printf("[%d][%d]=>",x,y);scanf("%d",&matriz[x, y]);//sile pongo matriz
[y] sale error y silo dejo asi solo guarda los 2 ultimos
} } for(i=1;i<=2;i++) { for(j=1;j<=2;j++) { printf("%d",matriz [i, j]);//lo mismo de arriva solo imprime los dos ultimos 2 veses } } }
Título: Re: Matrices Dinamicas
Publicado por: Amilius en Lunes 24 de Octubre de 2005, 21:21
1. el primero es el 0, no el 1. 2. con scanf siempre & por que es parámetro de salida. 3. no inicializaste a ni b 4. no usas ni a ni b en tus ciclos 5. -> arriba -> veces 6. no liberaste la memoria 7. al reservarla a ni b están definidas
Título: Re: Matrices Dinamicas
Publicado por: LeGatoRojo en Sábado 29 de Octubre de 2005, 02:29
[y] sale error y silo dejo asi solo guarda los 2 ultimos"
Salen solo los 2 ultimos por que es lo que le dices, necesitas usar un ciclo dentro de otro para moverte tambien en x, claro si hubieras puesto un apuntador a un arreglo de apuntadores, pero tan solo usas un apuntador normal.
Título: Re: Matrices Dinamicas
Publicado por: scullyERA en Jueves 10 de Noviembre de 2005, 15:41
Efectivamente, como dice el buen Darktiger estas usando un apuntador normal, necesitas declarar matriz como un doble apuntador para poder usarlo como matriz y no como vector: ;) suponiendo que a son tus filas y b son tus columnas
Código: Text
int **matriz; //declaras matriz como doble puntero
matriz= new (int *[a]);//asignas espacio en memoria para las filas
for (cont=0; cont < a; cont++)
matriz [cont]= new (int *[b]);//asignas espacio en memoria para las columnas de cada fila
Claro, además de todos los demás "pequeños" errores que te mencionaron: [/color] [color= red]a.- no inicializas a ni b, por lo que no se sabe cuanto espacio en memoria se asignara a matriz b.- el primer elemento de un arreglo es 0, no 1 c.- no usas a ni b como valores en las condiciones de repeticion de los ciclos [/color]