r2 (2013/04/23) ¶
Program.cs ¶
// 각 using System; namespace PascalTriangle { class Program { static void Main(string[] args) { string s; int lines; while (true) { Console.WriteLine("각 기 (0 = exit)"); s = Console.ReadLine(); //각 기 try { lines = Convert.ToInt32(s); if (lines < 0) { Exception e = new Exception(" "); throw e; } } catch (Exception e) { Console.WriteLine(e.Message); continue; } if (lines == 0) return; // 그 PTriangle pTriangle = new PTriangle(lines); Printer printer = new Printer(lines, pTriangle.getMax().ToString().Length+1); for (int i = 0; i < lines; i++) { printer.print(pTriangle.Next()); } } } } }
PTriangle.cs ¶
using System; namespace PascalTriangle { class PTriangle { private int[][] _triangle; // 각 private int _row; //각 private int _count; // private int _max; //각 값 public int[][] triangle { get { return _triangle; } } public int row { get { return _row; } } public int count { get { return _count; } } public int max { get { return _max; } } public PTriangle(int row) { this._row = row; _count = 1; _triangle = new int[this._row][]; _triangle[0] = new int[] { 1 }; if (this._row > 1) _triangle[1] = new int[] { 1, 1 }; for (int i = 2; i < this._row; i++) { _triangle[i] = new int[i+1]; _triangle[i][0] = 1; // _triangle[i][i] = 1; // for (int j = 0; j < i - 1; j++) { _triangle[i][j+1] = _triangle[i-1][j] + _triangle[i-1][j+1]; // 각 규 } } _max = _triangle[row-1][(row-1)/2]; } public int[] next() { if (_count > _row) return new int[0]; _count++; return _triangle[_count-2]; } public void resetCount() { _count = 1; } public int[] getData(int row) { return _triangle[row-1]; } public int getData(int row, int column) { return _triangle[row-1][column-1]; } } }
Printer.cs ¶
using System; namespace PascalTriangle { class Printer { private int lines; // private int count; // 공간 (4 ) private int scale; // public Printer(int lines, int scale) { this.lines = lines; this.scale = scale; if (scale % 2 == 1) this.scale++; // 경 } public void print(int[] nums) { count = lines - nums.Length; if (count % 2 == 1) { // 공간 경 그 printEmpty(scale / 2); count--; } for (int i = 0; i < count / 2; i++) { // 공간 printEmpty(scale); } for (int i = 0; i < nums.Length; i++) { // 공각 printEmpty(scale - nums[i].ToString().Length); // Console.Write(nums[i]); } Console.Write("\n"); } private void printEmpty(int size) { // for (int i = 0; i < size; i++) { Console.Write(" "); } } } }
결과 ¶
각 기 (0 = exit) 5 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 각 기 (0 = exit) 6 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 각 기 (0 = exit) 0
r1 (2013/04/19) ¶
Program.cs ¶
// 각 using System; namespace PascalTriangle { class Program { static void Main(string[] args) { string s; int lines; while (true) { Console.WriteLine("각 기 (0 = exit)"); s = Console.ReadLine(); //각 기 try { lines = Convert.ToInt32(s); if (lines < 0) { Exception e = new Exception(" "); throw e; } } catch (Exception e) { Console.WriteLine(e.Message); continue; } if (lines == 0) return; // 그 PTriangle pTriangle = new PTriangle(lines); Printer printer = new Printer(lines, pTriangle.getMax().ToString().Length+1); for (int i = 0; i < lines; i++) { printer.print(pTriangle.Next()); } } } } }
PTriangle.cs ¶
using System; namespace PascalTriangle { class PTriangle { private int lines; //각 private int count; // private int[] prv; // private int[] current; // public PTriangle(int lines) { this.lines = lines; count = 1; } public int[] Next() { if (count == 1) { //각 경 count++; return savePrv(new int[] { 1 }); } current = new int[count]; current[0] = 1; // current[count-1] = 1; // for (int i = 0; i < current.Length - 2; i++) { current[i + 1] = prv[i] + prv[i + 1]; // 각 규 } count++; return savePrv(current); } public int getMax() { // 각 값 for(int i = 0 ; i < lines ; i++) { Next(); } count = 1; //기 return prv[lines/2]; } private int[] savePrv(int[] i) { //과 int[] prv prv = i; return i; } } }
Printer.cs ¶
using System; namespace PascalTriangle { class Printer { private int lines; // private int count; // 공간 (4 ) private int scale; // public Printer(int lines, int scale) { this.lines = lines; this.scale = scale; if (scale % 2 == 1) this.scale++; // 경 } public void print(int[] nums) { count = lines - nums.Length; if (count % 2 == 1) { // 공간 경 그 printEmpty(scale / 2); count--; } for (int i = 0; i < count / 2; i++ ) { // 공간 printEmpty(scale); } for (int i = 0; i < nums.Length; i++) { // 공각 printEmpty(scale - nums[i].ToString().Length); // Console.Write(nums[i]); } Console.Write("\n"); } private void printEmpty(int size) { // for (int i = 0; i < size; i++) { Console.Write(" "); } } } }
결과 ¶
각 기 (0 = exit) 5 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 각 기 (0 = exit) 6 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 각 기 (0 = exit) 0