Треугольник Паскаля в ООП

Мой учитель написал нам класс для тестирования своей задачи с треугольником Паскаля. Вот:

public class TestTriangle {
    public static void main(String args[]) {
        PascalsTriangle triangle = new PascalsTriangle(7);
        if (triangle.getElement(5, 2) == 10)
            System.out.println("Triangle has passed one test.");
        else
            System.out.println("Triangle is wrong.");
        triangle.showTriangle();
    }
}

Вот мой код:

public class PascalsTriangle {
    private int rows;
    private int column;
    private int position;

    /**
     * Constructor for objects of class PascalsTriangle
     */
    public PascalsTriangle() {
        rows = 2;
    }

    public PascalsTriangle(int n) {
        rows = n;
    }

    public int getElement(int n, int k) {
        rows = n;
        column = k;
        //now the equation
        int z;
        int y;
        int d;
        for (z = 1; z <= n; z++) { //z is n! at nominator of equation
            int a = z;
            z = z * n;
            z = a + z;
        }
        for (y = 1; y <= k; y++) { //y is k! at denominator of equation
            int b = y;
            y = y * k;
            y = b + y;
        }
        int c = n - k;
        for (d = 1; d <= c; d++) { //d is (n-k)! at denominator of equation
            int e = d;
            d = d * c;
            d = e + d;
        }
        position = z / (y * d);
        return position;
    }

    public showTriangle() { //outputs entire triangle
    }
}

Единственная проблема, которая у меня есть, связана с методом showTriangle. Я не знаю, как заставить его выводить весь треугольник. Как бы я распечатал весь треугольник, если у меня есть единственная формула для нахождения определенной позиции?


person Erika    schedule 20.01.2015    source источник
comment
Распечатав все элементы?   -  person user253751    schedule 20.01.2015


Ответы (1)


Я скомпилировал ваш код. Java заставила меня объявить возвращаемый тип для showTriangle(). Я выбрал пустоту:

public void showTriangle() 
{
}

я провел тест

triangle.getElement(5,2)==10

И программа напечатана

Треугольник неправильный.

Вы уверены, что метод getElement возвращает правильный результат? Я напечатал результат getElement(5,2) и получил 0.

Как только функция getElement заработает, я бы реализовал метод showTriangle() с двумя циклами. В псевдокоде это будет выглядеть так. Одна петля для номера строки (n) и одна петля для столбца (k)

for i = 0 to n
{
    for j = 0 to k
    {
        System.out.print(getElement(i,j) + " ") //Print triangle value and a space
    }
    System.out.print("\n") //Skip down one line
}
//NOTE: You have to pick the right value of k based on the n.

Это не напечатает красиво отформатированный треугольник, но если getElement() работает правильно, должно что-то напечатать:

1 
1 1 
1 2 1 
person ahoffer    schedule 20.01.2015