• Miércoles 20 de Noviembre de 2024, 18:41

Autor Tema:  Matrices Dinamicas  (Leído 1473 veces)

vhgmaya

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Matrices Dinamicas
« en: Lunes 24 de Octubre de 2005, 20:35 »
0
#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
                }
        }
}

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Matrices Dinamicas
« Respuesta #1 en: Lunes 24 de Octubre de 2005, 21:21 »
0
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

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Matrices Dinamicas
« Respuesta #2 en: Sábado 29 de Octubre de 2005, 02:29 »
0
"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"


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.
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

scullyERA

  • Miembro activo
  • **
  • Mensajes: 42
  • Nacionalidad: 00
    • Ver Perfil
Re: Matrices Dinamicas
« Respuesta #3 en: Jueves 10 de Noviembre de 2005, 15:41 »
0
    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
  1.  int **matriz; //declaras matriz como doble puntero
  2.  matriz= new (int *[a]);//asignas espacio en memoria para las filas
  3.  for (cont=0; cont &#60; a; cont++)
  4.    matriz [cont]= new (int *[b]);//asignas espacio en memoria para las columnas de cada fila
  5.  
  6.  
    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]