Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Crear Array

Estas en el tema de Crear Array en el foro de C/C++ en Foros del Web. Hola a todos. Esta duda que les voy a plantear posiblemente sea muy sencilla de hacer pero es que no se por que me he ...
  #1 (permalink)  
Antiguo 13/07/2010, 04:59
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 7 meses
Puntos: 14
Crear Array

Hola a todos.
Esta duda que les voy a plantear posiblemente sea muy sencilla de hacer pero es que no se por que me he atascado con ella de una manera rarisima.
Veran lo q quiero hacer es crear una matriz de dos dimensiones pero diciendo yo el valor. Mas o menos el codigo que tengo planteado ( y que no funciona) es este.


Código:
void main ()
{
    float filas, columnas;
    //primero decimos que tamaño tiene la matriz
    printf("Introduce el valor de las filas: ");
    scanf("%f",&filas);
    printf("Introduce el valor de las columnas: ");
    scanf("%f",&columnas);

    //ahora ya tenemos el tamaño asi que podemos crear la matriz
    float m[][]=new float[filas][columnas];

    for (int i=0; i<filas; i++)
    {
        for(int j=0; j<columnas; j++)
        {
            m[i][j]=2;
        }
    }

    for (int i=0; i<filas; i++)
    {
        for(int j=0; j<columnas; j++)
        {
            printf(" "+m[i][j]+" ");
        }
        printf("\n");
    }
}
Lo del final no creo que tenga mucha importancia es solo que queria inicializarlo con el valor 2 y luego mostrarlo en forma de tabla, asi que creo que el problema no es ese.

Muchas gracias a todos por vuestra atencion.
Un saludo
Pinty
  #2 (permalink)  
Antiguo 13/07/2010, 08:00
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 5 meses
Puntos: 228
Respuesta: Crear Array

Te sugiero que cuando uses indices de tablas los use con variables del tipo int.
int filas, columnas;
scanf("%d",&filas);
scanf("%d",&columnas);

Ademos,Lo que no te funciona es el printf de mostrar la tabla.
Reemplaza este printf(" "+m[i][j]+" ");
por esto: printf("%d ",m[i][j]);

mira aqui para ver el uso del printf

http://www.cplusplus.com/reference/c...cstdio/printf/
  #3 (permalink)  
Antiguo 14/07/2010, 19:31
kkz
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Crear Array

no te funciona porque para decirle tu en ejecucion el tamaño de la matriz (o array) que quieras que te cree tienes que hacerlo mediante memoria dinamica... esto se hace con las funciones malloc (para reservar la memoria) y free(para liberarla).

yo no estoy muy puesto en como se hace pero va por ese camino...

sino te quieres complicar declara tu tamaño como dos #define (#define fila 3) y luego en tu programa usa fila. el inconveniente es que para canviar el valor tendras que cambirlo en el define y compilar de nuevo.
  #4 (permalink)  
Antiguo 14/07/2010, 20:28
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 5 meses
Puntos: 228
Respuesta: Crear Array

No esta en lo correcto. Fijate que para definir la matriz utiliza new. Eso es un instruccion de C++ que complemente un malloc y un llamado al contructor de la clase entre otras cosas. Asi que implicitamente esta haciendo el malloc. C

Como mencione antes el problema esta en como mostro los datos.
  #5 (permalink)  
Antiguo 15/07/2010, 02:06
 
Fecha de Ingreso: julio-2010
Mensajes: 153
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Crear Array

no puedes usar new de esa forma, primero tienes que crear un puntero a punteros

**p

asignar el numero de filas con new
y con un for el numero de columnas a cada fila con new
  #6 (permalink)  
Antiguo 15/07/2010, 09:51
kkz
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Crear Array

Cita:
Iniciado por sam90 Ver Mensaje
No esta en lo correcto. Fijate que para definir la matriz utiliza new. Eso es un instruccion de C++ que complemente un malloc y un llamado al contructor de la clase entre otras cosas. Asi que implicitamente esta haciendo el malloc. C

Como mencione antes el problema esta en como mostro los datos.
tendrás razon! yo ya dije que no estaba muy puesto y esa forma de declarar con el new no la entendia muy bien!

ahora ya se un pokito mas! gracias!
  #7 (permalink)  
Antiguo 15/07/2010, 11:02
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 5 meses
Puntos: 228
Respuesta: Crear Array

Lo que no estoy seguro de la diferencia entre:

float m[][]=new float[filas][columnas];

float **m=new float[filas][columnas];

Yo siempre uso la segunda. Pero no se si la primera es valida.
  #8 (permalink)  
Antiguo 15/07/2010, 14:09
 
Fecha de Ingreso: julio-2010
Mensajes: 153
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Crear Array

es lo mismo, pero no funciona así, pruebalo...
es imposible crear un array bidimencional de esa forma
como dije antes, primero creas las filas y luego tienes que reserbar el numero de columnas por cada fila
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:09.