domingo, 8 de mayo de 2016

TRIÁNGULO DE FLOYD EN JAVA


El Triángulo de Floyd (llamado así en honor a Robert Floyd), es un arreglo de enteros positivos en forma de triángulo rectángulo, en el cual:

1) El arreglo comienza con el número uno, el cual ocupa el vértice superior del triángulo.

2) Por cada fila, se ubican tantos enteros como sea el número de la fila, por ejemplo, en la fila dos del triángulo se ubican dos enteros.

3) A medida que se desciende por el rectángulo, pasando fila por fila, se sigue la sucesión de enteros positivos.

Un ejemplo de triángulo de Floyd de cinco filas:

1
2             3
4             5             6
7             8             9             10
11           12           13           14           15

El siguiente programa, escrito en Java, genera un triángulo de Floyd a partir del dato del número de filas. La complejidad del algoritmo no radica en la sucesión en sí, la cual puede ser implementada por una variable contadora incremental en uno, en un ciclo de número definido de repeticiones. El problema está más bien en hacer coincidir el número de elementos de la fila, con el número de fila en sí.

Para resolver este problema, se hizo uso de un doble ciclo for, donde el ciclo externo controla el número de filas del triángulo y el ciclo interno el número de elementos por fila. La variable contadora es externa a este doble ciclo y se incrementa dentro del ciclo interno, de esa forma se logra que su valor actual sea independiente al valor de las variables de control tanto del ciclo interno como del externo. Por otra parte, para hacer coincidir el número de elementos de una fila con el número de dicha fila, se acomoda la condición de finalización del ciclo interno de la siguiente forma:

Repetir mientras variable control ciclo interno sea menor o igual que variable control ciclo externo.

Código del programa:

import java.util.Scanner;

/*
 * Genera un triángulo de Floyd a partir del dato de entrada
 * del número de filas del triángulo.
 *
 */

/**
 *
 * @author J.B.
 *
 */

public class TrianguloFloyd {
    public static void main(String[] args) {
        int numeroFilas = 0;       
        Scanner lector = new Scanner(System.in);
        System.out.print("Digite cuántas filas tiene el triángulo: ");
        numeroFilas = lector.nextInt();  // Lee el número de filas.
        int contador = 0; // Los números del triángulo

        for (int i = 1; i <= numeroFilas; i++)  // Recorre las filas
        {
            for(int j = 1; j <= i; j++)  // Recorre cada elemento de la fila
            {
                contador++;
                System.out.print("  " + contador); 
               // Imprime el número actual en pantalla.
            }
            System.out.println("");  // Salto a la siguiente fila
        }
    }
}

Ejemplos de ejecución:










No hay comentarios:

Publicar un comentario

Seguidores