Cómo imprimir la matriz?

int main() {  
  int my array[3][3] =
    10, 23, 42,    
    1, 654, 0,  
    40652, 22, 0  
  };  

  printf("%d\n", my_array[3][3]);  
  return 0;
}

No soy capaz de obtener la matriz para imprimir.. Alguna idea de por qué? Soy un programador principiante así que ninguna de las palabras de asesoramiento son apreciados.

  • Es la parte del código que falta? Parece que te falta un corchete de apertura en la matriz, así como un _ en el mi_matriz declaración
  • sólo una palabra de consejo: se debe especificar el lenguaje de codificación con el fin de identificar una solución adecuada 🙂
  • Oh, y usted debe informarnos el error que recibes, porque hay un montón de espacio para los errores en el código 😉
  • Gran sugerencia: Matriz de índices comienzan en 0. my_array[3][3] está tratando de conseguir las 4 de la celda en la 4ª fila de la matriz. ¿Qué hay de malo en esta imagen?

4 Kommentare

  1. 29

    Lo que se hace es imprimir el valor en la matriz en el punto [3][3], que es válido para un 3by3 matriz, usted necesita para recorrer todos los lugares y de impresión.

    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 3; j++) {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    } 

    Esto va a imprimir en el siguiente formato

    10 23 42
    1 654 0
    40652 22 0

    si quieres más exacta formato que usted tendrá que cambiar el modo en el printf es el formato.

    • Si usted está programando en c++ también puede utilizar cout en lugar de printf
    • cierto, pero él utilizó printf y no tienen un idioma indicó que cuando me respondió, así que me quedé con printf.
  2. 11

    No hay .la longitud de la propiedad en C. El .la longitud de la propiedad sólo puede ser aplicado a las matrices de programación orientada a objeto (OOP) idiomas. El .la longitud de la propiedad se hereda de la clase object; la clase de todas las otras clases de & los objetos heredan de en un lenguaje POO. También, se podría utilizar .longitud-1 para devolver el número de la última índice de una matriz; usando solo el .longitud devolverá el total de la longitud de la matriz.

    Sugiero algo como esto:

    int index;
    int jdex;
    for( index = 0; index < (sizeof( my_array ) / sizeof( my_array[0] )); index++){
       for( jdex = 0; jdex < (sizeof( my_array ) / sizeof( my_array[0] )); jdex++){
            printf( "%d", my_array[index][jdex] );
            printf( "\n" );
       }
    }

    La línea (sizeof( mi_matriz ) /sizeof( mi_matriz[0] )) le dará el tamaño de la matriz en cuestión. El tamaño de la propiedad devolverá la longitud en bytes, por lo que uno debe dividir el tamaño total de la matriz de bytes por cuántos bytes que componen cada elemento, cada elemento ocupa 4 bytes, ya que cada elemento es de tipo int, respectivamente. La matriz es de tamaño total de 16 bytes y cada elemento es de 4 bytes para 16/4 los rendimientos de 4 el número total de elementos en la matriz debido a que la indexación se inicia en 0 y no en 1.

    • Esto no funciona si la matriz no es cuadrada, ya que jdex es un bucle con el tamaño exterior de la matriz y no la interior.
  3. 3

    Parece que tienes una errata en su matriz, debe leer:

    int my_array[3][3] = {...

    Usted no tiene la _ o la {.

    También my_array[3][3] es una ubicación no válida. Dado que los equipos comienzan a contar a 0, usted está accediendo a la posición 4. (Matrices son extraños similares).

    Si quieres sólo el último elemento:

    printf("%d\n", my_array[2][2]);

    Si quieres toda la matriz:

    for(int i = 0; i < my_array.length; i++) {
      for(int j = 0; j < my_array[i].length; j++)
        printf("%d ", my_array[i][j]);
      printf("\n");
    }
  4. 1

    Usted podría intentar esto:

    #include <stdio.h>
    
    int main() 
    {  
      int i,j;
      int my_array[3][3] ={10, 23, 42, 1, 654, 0, 40652, 22, 0};
      for(i = 0; i < 3; i++) 
      {
           for(j = 0; j < 3; j++) 
           {
             printf("%d ", my_array[i][j]);
           }
        printf("\n");
      } 
      return 0;
    }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea