miércoles, 1 de febrero de 2017

Matrices: Tablas de multiplicar

Crea una función que en primer lugar genere esta matriz:

   0   1   2   3   4   5   6   7   8   9  10
   1   0   0   0   0   0   0   0   0   0   0
   2   0   0   0   0   0   0   0   0   0   0
   3   0   0   0   0   0   0   0   0   0   0
   4   0   0   0   0   0   0   0   0   0   0
   5   0   0   0   0   0   0   0   0   0   0
   6   0   0   0   0   0   0   0   0   0   0
   7   0   0   0   0   0   0   0   0   0   0
   8   0   0   0   0   0   0   0   0   0   0
   9   0   0   0   0   0   0   0   0   0   0
  10   0   0   0   0   0   0   0   0   0   0
Como ves la primera fila y la primera columna tienes valores del 1 al 10. A continuación rellena los valores centrales con el resultado de multiplicar el número que aparezca en la primera fila por el número que aparezca en la primera columna, de tal forma que quede esto:
   0   1   2   3   4   5   6   7   8   9  10
   1   1   2   3   4   5   6   7   8   9  10
   2   2   4   6   8  10  12  14  16  18  20
   3   3   6   9  12  15  18  21  24  27  30
   4   4   8  12  16  20  24  28  32  36  40
   5   5  10  15  20  25  30  35  40  45  50
   6   6  12  18  24  30  36  42  48  54  60
   7   7  14  21  28  35  42  49  56  63  70
   8   8  16  24  32  40  48  56  64  72  80
   9   9  18  27  36  45  54  63  72  81  90
  10  10  20  30  40  50  60  70  80  90 100


SOLUCIÓN EN JAVA:
package matricestablasmultiplicar;

public class MatricesTablasMultiplicar {

    static int[][] generaMatriz(int filas, int columnas){
        int i,j;
        int[][] matriz = new int[filas][columnas];
        
        //Relleno la primera fila y la primera columna de la matriz
        for (i=0 ; i < matriz.length ; i++){
            matriz[i][0]=i;
            matriz[0][i]=i;
        }
        //Ahora relleno el resto de la matriz
        for (i=1 ; i < matriz.length ; i++){
            for (j=1 ; j < matriz[i].length ; j++){
               matriz[i][j]=i*j; 
            }
        }
        return matriz;
    }
    //Con esta función hacemos un recorrido por la matriz para mostrar todas sus
    //casillas, utilizo la salida con formato "%4d" para que todos los valores salgan
    //tabulados con un ancho de 4 carácteres.
    static void muestraMatriz(int[][] matriz){
        int i,j;
        
        for (i=0; i < matriz.length ; i++){
            for (j=0 ; j < matriz[i].length ; j++){
                System.out.printf("%4d", matriz[i][j]);
            }
            System.out.println();
        }
    }
    public static void main(String[] args) {
        int[][] matriz=new int[11][11];
        
        matriz=generaMatriz(11,11);
        muestraMatriz(matriz);        
    }    
}

3 comentarios:

  1. podrias explicarme para que sirve esto
    public static void main(String[] args) {
    int[][] matriz=new int[11][11];

    matriz=generaMatriz(11,11);
    muestraMatriz(matriz);

    ResponderEliminar
    Respuestas
    1. llama al metodo generar matriz de 11 fila y 11 columnas y el resultado lo vuelca en la matriz del main
      De esta manera creo que es mas optimo, o ese es mi planteamiento, si me equivoco que me corrijan, asi es como se aprende, ensayo y error

      public static void main(String[] args) {
      int[][] tablas = new int[11][11];

      generaMatriz(tablas);
      muestraMatriz(tablas);
      }

      public static void generaMatriz(int[][] tablas) {
      int i, j;

      // relleno el resto de la matriz
      for (i = 0; i < tablas.length; i++) {
      for (j = 0; j < tablas[i].length; j++) {
      tablas[i][j] = i * j;
      }
      }

      }

      Eliminar
  2. La verada es que no entiendo para que declaras una variable en el main y despues otra mas en el metodo generarMatriz, con pasar la matriz del main como parametro en el metodo y dicho metodo hacerlo tipo void puesto que no tendrias que retornar nada, te ahorras una matriz, por consiguiente menos recursos de memoria, no es que esté mal el ejercicio pero no es precisamente optimo ya que declaras contenido por duplicado pero no esta mal

    ResponderEliminar