Trojkat Pascala

0

Witam
Mam maly/duzy problem: Polega on na tym ze nie wiem/nie moge tego ustrojstwa ustawic tak zeby wyswietlalo sie na srodku... Jakies pomysly? :)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Pascal
{
public static void main(String[] args) throws IOException
{
System.out.println("Wpisz liczbe...");

InputStreamReader is = new InputStreamReader(System.in);
BufferedReader bf = new BufferedReader(is);
int numRow = Integer.parseInt(bf.readLine());
for (int i=1; i<=numRow; i++) {
for (int j=1; j<=numRow-i; j++)
{
System.out.print(" ");
}

for (int k=1; k<=i; k++)
{
System.out.print( i + " ");
}
System.out.println();
}
}
}
0

Ja wprowadziłbym sobie jakąś małą funkcję do "przedłużania" liczb za pomocą spacji do jakiejś określonej długości:

public static String fill(int number, int length) {
	String string = number+"";
	while (string.length() < length) string+=" ";
	return string;
}

I jeszcze jedną do obliczania wartości liczby w wierszu i na pozycji k (w końcu ma to być chyba trójkąt Pascala ;-)):

public static int getNumber(int i, int k) {
	if (k == 1 || k == i) {
		return 1;
	} else {
		return getNumber(i-1, k-1)+getNumber(i-1, k);
	}
}

Jeśli ich użyjemy, to główna pętla będzie wyglądać tak:

for (int i=1; i<=numRow; i++) {
	for (int j=1; j<=numRow-i; j++) {
		System.out.print("   ");
	}
	for (int k=1; k<=i; k++) {
		System.out.print(fill(getNumber(i, k), 6));
	}
	System.out.println();
}

Życzę powodzenia w dalszych eksperymentach ;-)

0

Normalnie caluje po rekach i nogach :) Pieknie to teraz wyglada ;)

0

Jeszcze ostatnia rzecz po kilku upgradach mi zostala i nie moge sobie poradzic . Mianowicie chodzi o wprowadzenie ograniczenia do jakich ma byc budowany trojkat... Ktos cos moze wie? :)
Pozdrawiam

0

Może tak

.....
int numRow = Integer.parseInt(bf.readLine());
if(numRow>12)
{
    System.out.println("Opamietaj sie i wpisz normalna liczbe (<13)");
    System.exit(0);
}
0

Najprostsze rozwiazania nie przychodza do glowy :) Dzieki jeszcze raz chlopaki... Nastepnym razem/ miejmy nadzieje ze juz bedzie szlo mi to gladziej bede tez tu sie zglaszal :)
Pozdrowienia

0

Esh... :) Program niby fajny podoba sie wsio ale nie podoba sie ze nie uzywa klasy Scanner a BufferedReader i InputStreamReader.
No to zaczela sie pisanie wersji " Scanner" i napotykam ten sam problem co wczesniej. Probowalem sie kierwac waszymi wskazowkami ale ni cholery nie chce :)
Czy moglbym prosic jeszcze raz o pomoc ?????

import java.util.Scanner;

public class pascal {
public static void main(String args[]) {
int n;
Scanner s = new Scanner(System.in);
System.out.print("Podaj liczbe: ");
n = s.nextInt();
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(nCr(i, j) + " ");
}
System.out.println();
}

}

public static long nCr(int n, int t) {
if (n == t) {
return 1;
} 
else 

{

return Factorial(n) / (Factorial(n - t) * Factorial(t));
}
}

public static long Factorial(int n) {
long FactorialVal = 1;
if (n != 0) {
for (int i = 2; i <= n; i++) {
FactorialVal = FactorialVal * i;
}
}

return FactorialVal;
}
}
0

Oki jednak udalo mi sie :)
Pozdrawiam

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.