Java - Llenar una matriz cuadrada con la serie de Fibonacci

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 7 puestos en Java (en relación al último mes)
Gráfica de Java

Llenar una matriz cuadrada con la serie de Fibonacci

Publicado por Mauricio (3 intervenciones) el 09/01/2019 03:21:21
Hola me pueden ayudar con el siguiente problema: Dada una matriz cuadrada de tamaño n, llenarla con la serie de Fibonacci. El usuario debe ingresar los dos primeros datos de la serie y luego generarla. Por ejemplo:
Tamaño de la matriz? = 4
Primer numero = 3
segundo numero = 5

3 5 8 13
21 34 55 89
144 233 377 610
987 1597 2584 4181
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: 96
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Llenar una matriz cuadrada con la serie de Fibonacci

Publicado por Bruno (43 intervenciones) el 09/01/2019 04:01:40
Puede ser que lo calcules en un vector
1
2
3
4
5
6
7
8
9
10
11
for (i = 0+2; i<16; i++)
v[i] = v[i-2] + v[i-1];
 
y luego lo pases a la matriz
l=0;
for (j = 0; j < 4; j++) {
  for (k = 0; k < 4; k++) {
     m[j][k] = v[l];
     l++;
  }
}
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
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Llenar una matriz cuadrada con la serie de Fibonacci

Publicado por Billy Joel (875 intervenciones) el 09/01/2019 16:52:59
Yo lo resuelvo así:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
/**
 *
 * @author billy.johnson
 */
public class MatrizFibonacci {
 
    public static void main(String [] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Tamaño de la matriz: ");
        int tamano = Integer.parseInt(br.readLine());
        System.out.print("Primer número: ");
        int primerNumero = Integer.parseInt(br.readLine());
        System.out.print("Segundo número: ");
        int segundoNumero = Integer.parseInt(br.readLine());
 
        //Creamos un vector que contenga la sucesión de números
        int [] elementos = new int[tamano * tamano];
        elementos[0] = primerNumero;
        elementos[1] = segundoNumero;
        //Cargamos el vector con la sucesión de números
        for (int i = 2; i < elementos.length; i++) {
            elementos[i] = elementos[i-1] + elementos[i-2];
        }
        //creamos un indice/contador para recorrer el vector
        int c = -1;
        //Creamos la matriz y la llenamos con los elementos del vector
        int [][] matriz = new int[tamano][tamano];
        for (int i = 0; i < matriz.length; i++) {
            for (int j = 0; j < matriz.length; j++) {
                //Este contador nos permite recorrer el vector con los elementos de la sucesión
                c++;
                matriz[i][j] = elementos[c];
            }
        }
 
        //Ahora mostramos la matriz
        for (int i = 0; i < matriz.length; i++) {
            for (int j = 0; j < matriz.length; j++) {
                System.out.print(matriz[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

Le he puesto bastantes comentarios para que quede claro lo que estoy haciendo, cualquier duda escribes.
Saludos!!
;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Llenar una matriz cuadrada con la serie de Fibonacci

Publicado por Tom (1831 intervenciones) el 09/01/2019 21:38:25
Y ¿ por qué no ahorrarse un array ? Ya que la matriz es cuadrada, para que el asunto tenga sentido la dimensión mínima sería de 2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Fibo {
	/* dim must be >= 2 */
	public static int[][] generate(int dim, int first, int second) {
		int[][] res = new int[dim][dim];
		int v;
 
		res[0][0] = first;
		res[0][1] = second;
 
		for(int i = 2; i < dim * dim; i++) {
			v = first + second;
			res[i / dim][i % dim] = v;
			first = second;
			second = v;
		}
		return res;
	}
}
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