Dr. Baranyai László, fénykép

Dr. Baranyai László

 

Pascal háromszög generálása java kóddal

jan 1, 15:55, |

 

A Pascal háromszög binomiális együtthatókat tartalmaz. A háromszög széleit egyesek alkotják, a többi számot pedig a felette lévő 2 szám összegeként kapjuk. Algebrában a kéttagú nevezetes szorzatok együtthatóit - (x+y)^n - mutatja meg. Jelfeldolgozásban súlyozott zajszűrésre használhatjuk a sorokban megadott számokat.

Java megvalósítás

Az alábbi pascal nevű osztály végzi el a számítást és jeleníti meg konzolon az eredményt. A kódban MAXLINE konstans határozza meg a kiszámított és megjelenített sorok számát. Az egész műveletet a main() függvényben helyeztem el:

public class pascal {

 public static int MAXLINE = 10;

 public static void main(String[] args) {
  int[] Line;
  int[] tmp;
  int i,j;

  // information
  System.out.println("Pascal triangle for "+MAXLINE+" lines.");
  // allocation memory
  Line = new int[MAXLINE];
  tmp  = new int[MAXLINE];
  // initialize line
  Line[0] = 1;
  for (i=1;i<MAXLINE;i++) Line[i] = 0;
  // calculate lines
  for (i=0;i<MAXLINE;i++) {   
   tmp[0] = 1;
   if (i>0) {
    for (j=1;j<=i;j++) tmp[j] = Line[j-1] + Line[j];
   }
   for (j=0;j<=i;j++) {
    System.out.print(" "+tmp[j]);
    Line[j] = tmp[j];
   }
   System.out.println();
  }
 }

}

A jobb érthetőség érdekében két tömböt használtam fel, egyet az új sor kiszámítására, egyet pedig a megelőző sor tárolására. A fordítása egyszerű, de felhívnám a figyelmet, hogy a JRE (Java Runtime Environment) és JDK (Java Development Kit) azonos verziószáma fontos. Ha ezek eltérő verzióban állnak rendelkezésre, akkor a fordítóval tudatni kell a megfelelő verziót, pl.:

$ javac -source 1.6 -target 1.6 pascal.java

Az elkészített pascal.class bájtkód már futtatható:

$ java pascal
Pascal triangle for 10 lines.
 1
 1 1
 1 2 1
 1 3 3 1
 1 4 6 4 1
 1 5 10 10 5 1
 1 6 15 20 15 6 1
 1 7 21 35 35 21 7 1
 1 8 28 56 70 56 28 8 1
 1 9 36 84 126 126 84 36 9 1

A program továbbfejleszthető, pl. felhasználó által megadott mennyiségű sort számoljon ki. Gyakorláshoz, továbbfejlesztéshez letölthető a forráskód: