C/Visual C - Problema con una Matriz (array bidimensional)

 
Vista:
sin imagen de perfil

Problema con una Matriz (array bidimensional)

Publicado por Antonio (3 intervenciones) el 09/04/2016 06:49:30
Actualmente poseo un problema para crear un arreglo bidimensional (una matriz):
Cuando compilo el programa, compila de forma normal pero al momento de introducir estos valores ocurre un error: (Ocurre con más valores pero esta es la más corta)

X = 1
Y = 1

[0,0] = 0
[0,1] = 1
[1,0] = 0
[1,1] = 1

La corrida en frío sería la siguiente:
0 0
0 1

Cuando debería ser:
0 1
0 1

¿Qué error habré cometido? Soy nuevo en el lenguaje C.

Sí es necesario añadir lo he compilado en Debian 8 (Linux)

EDIT: En el programa al final está la corrida en frío sin mostrar la matriz en si, sólo indicando los valores.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
int x,y;
 
int main()
{
  printf ("Introduzca el número de filas \n");
  scanf ("%d", &x);
 
  printf ("Introduzca el número de columnas \n");
  scanf ("%d", &y);
 
  int i,j;
  int mjuego[x][y];
 
  for (i=0;i<=x;i++)
  {
    for (j=0;j<=y;j++)
     {
	printf ("Introduzca el valor de la casilla [%d][%d] \n",i,j);
	scanf ("%d", &mjuego[i][j]);
     }
  }
 
  for (i=0;i<=x;i++)
  {
    for (j=0;j<=y;j++)
     {
	printf ("[%d][%d] - %d \n",i,j,mjuego[i][j]);
     }
  }
 
  return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con una Matriz (array bidimensional)

Publicado por agustin (272 intervenciones) el 09/04/2016 16:11:53
Varias cosillas:
int mjuego[x][y];
Eso no es estándar. En una actualización del lenguaje lo pusieron y en la siguiente lo quitaron. Usa malloc y free.

for (i=0;i<=x;i++)
Recuerda que si por ejemplo has indicado que x vale 3 y usas ese valor para inicializar el array pues tendría 3 miembros. En los arrais su primer miembro tiene el índice 0 por lo que si son 3 miembros el último tendría el índice 2. Si te fijas tu le indicas que empiece en 0 y en este ejemplo seguiría hasta 3 con lo que desbordas el buffer y cualquiera sabe lo que puede estar leyendo. Este error lo cometes en todos los bucles así que corrija eso y cambia la inicializa con usando malloc y free y nos cuentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problema con una Matriz (array bidimensional)

Publicado por Antonio (3 intervenciones) el 11/04/2016 02:22:57
He realizado los cambios correspondientes a mi programa y ahora funciona correctamente.

Aún no estoy totalmente familiarizado con C, estaba acostumbrado a muchas cosas en PASCAL.

Muchas gracias por tú ayuda, y con la matriz dinámica es más fácil trabajar ahora que he buscado información de como trabajar con Malloc correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar