25.07.2017 Views

Intro-CSharp-Book-v2015

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

258 Въведение в програмирането със C#<br />

1 3 3 1<br />

1 4 6 4 1<br />

. . .<br />

За да получим триъгълника на Паскал до дадена височина, например 12,<br />

можем да заделим назъбен масив triangle[][], който съдържа 1 елемент на<br />

нулевия си ред, 2 – на първия, 3 – на втория и т.н. Първоначално<br />

инициализираме triangle[0][0] = 1, а всички останали клетки на масива<br />

получават по подразбиране стойност 0 при заделянето им. След това<br />

въртим цикъл по редовете, в който от стойностите на ред row получаваме<br />

стойностите на ред row+1. Това става с вложен цикъл по колоните на<br />

текущия ред, следвайки дефиницията за стойностите в триъгълника на<br />

Паскал: прибавяме стойността на текущата клетка от текущия ред<br />

(triangle[row][col]) към клетката под нея (triangle[row+1][col]) и<br />

клетката под нея вдясно (triangle[row+1][col+1]). При отпечатването се<br />

добавят подходящ брой интервали отляво (чрез метода PadLeft() на класа<br />

String), за да изглежда резултатът по-подреден.<br />

Следва примерна реализация на описания алгоритъм:<br />

class PascalTriangle<br />

{<br />

static void Main()<br />

{<br />

const int HEIGHT = 12;<br />

PascalTriangle.cs<br />

// Allocate the array in a triangle form<br />

long[][] triangle = new long[HEIGHT + 1][];<br />

for (int row = 0; row < HEIGHT; row++)<br />

{<br />

triangle[row] = new long[row + 1];<br />

}<br />

// Calculate the Pascal's triangle<br />

triangle[0][0] = 1;<br />

for (int row = 0; row < HEIGHT - 1; row++)<br />

{<br />

for (int col = 0; col

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!