La mejor manera de recorrer un array bidimensional

Hola, me gustaria saber cual es la mejor forma de recorrer un array de dos dimensiones, ya que tengo un monton de tablas dentro de varios arrays en dos dimensiones, asi y como tanbien me gustaria saber como calcular el tamaño del array, de cualtas filas se compone.

En PHP si no recuerdo mal para hacer esto se utiliza count o sizeof, pero nunca la he utilizado en un array 2D.

$b[0]  = 7;
$b[5]  = 9;
$b[10] = 11;
$result = count($b);
// $result == 3

En arduino he intentado utilizar el sizeof pero no lo he debido de hacer bien por que no me ha funcionado:

int ProgTemporizador [][7] = 
  {
  //Fecha, Mes, Año, Hora, Minutos, Salida, Estado  
  {2014, 1, 2, 10, 12, 0, 1},
  {2014, 1, 2, 10, 13, 0, 0},
  {2014, 1, 2, 10, 13, 1, 1},
  {2014, 1, 2, 10, 14, 1, 0}
  };
int x = sizeof(ProgTemporizador); 
void setup()
  {
  Serial.begin(9600); 
  }

void loop()
  {  
  for (int i=0; i < x; i++)
    {
      for (int n=0; n < 7; n++)
        {
          Serial.print(ProgTemporizador [i][n]);
          Serial.print("   ");
        }
    Serial.println();    
    }
  Serial.println ("-----------------------------------------------------");  
  delay(5000);
  }

Muchas gracias.

Igual me la estoy jugando, porque no estoy muy seguro, pero creo que sí puedes partir del sizeof. ¿Has controlado qué valor te devuelve sizeof en este caso? ¿podría ser 56 (4*7*2)?

Creo que sizeof te devuelve el tamaño en bytes del array, no el número de filas. Para obtener el número de filas tendrás que dividir el valor devuelto entre el tamaño de una fila (ten en cuenta que un int son dos bytes, así que deberías dividir entre 14).

Hola, muchas gracias llevaba mucho tiempo atascado con este tema y lo avía dejado para lo último del programa.
En mis distintas pruebas obtenía dos valores el 56 que es el correcto y el 14.

Ahora todo funciona correctamente:

int ProgTemporizador [][7] = 
  {
  //Fecha, Mes, Año, Hora, Minutos, Salida, Estado  
  {2014, 1, 2, 10, 12, 0, 1},
  {2014, 1, 2, 10, 13, 0, 0},
  {2014, 1, 2, 10, 13, 1, 1},
  {2014, 1, 2, 10, 14, 1, 0}
  };




void setup()
  {
  Serial.begin(9600); 
  }

void loop()
  {
  int x = sizeof(ProgTemporizador);   
  x = (x / 7) / 2;
//x = x / 14; Mas facil...
  Serial.print ("Numero X = ");
  Serial.println (x);
  for (int i=0; i < x; i++)
    {
      for (int n=0; n < 7; n++)
        {
          Serial.print(ProgTemporizador [i][n]);
          Serial.print("   ");
        }
    Serial.println();    
    }
  Serial.println ("-----------------------------------------------------");  
  delay(5000);
  }

Un placer. De paso me ha ayudado a recordar a mí, que no lo tenía muy fresco. Saludos

hola disculpen queria saber como usar un elemento que esta dentro de una matriz por ejemplo solo quiero q me muestre un elemento y me sale 822 ??

aqui esta un codigo simple bueno simple para tratar de empezar:

int matriz [2][2] = { {1,8}, {5,6} };

void setup() { Serial.begin(9600); }

void loop() {

Serial.print(matriz [1][2]); Serial.print(" ");

delay(5000); }

Gonzalo cuando llegas a un foro debes leer sus normas.

Una de ellas es que no puedes responder un posteo que no tiene movimientos desde 03-01-2014, 16:06:26.
No usas tags además.

Tu pregunta es de facil respuesta, asi que crea un nuevo tema y te responderá alguien de la comunidad.