It looks like you're new here. If you want to get involved, click one of these buttons!

- All Categories 139.8K
- Programming Languages 104K
- Assembler Developer 6.2K
- Basic 1.8K
- C and C++ 39.7K
- C# 4.2K
- Delphi and Kylix 7.9K
- Haskell 3
- Java 9.5K
- Pascal 4.1K
- Perl 1.3K
- PHP 1.9K
- Python 500
- Ruby 47
- VB.NET 4.3K
- VBA 1.6K
- Visual Basic 20.8K
- Game programming 2.6K
- Console programming 308
- DirectX Game dev 87
- Minecraft 1
- Newbie Game Programmers 107
- Oculus Rift 2
- Applications 8.8K
- Computer Graphics 1.8K
- Computer Hardware 720
- Database & SQL 3.4K
- Electronics development 517
- Matlab 1.6K
- Sound & Music 625
- XML Development 253
- Classifieds 3.2K
- Co-operative Projects 184
- For sale 160
- FreeLance Software City 188
- Jobs Available 1.9K
- Jobs Wanted 597
- Wanted 192
- Microsoft .NET 2.8K
- ASP.NET 1.7K
- .NET General 1.1K
- Miscellaneous 2.8K
- Join the Team 2
- User Profiles 1
- Comments on this site 351
- Computer Emulators 54
- General programming 1.7K
- New programming languages 114
- Off topic board 590
- Mobile & Wireless 146
- Android 20
- Palm Pilot 124
- Multimedia 334
- Demo programming 151
- MP3 programming 183
- Bash scripts 0
- Cloud Computing 10
- FreeBSD 52
- LINUX programming 1.7K
- MS-DOS 361
- Shell scripting 0
- Windows CE & Pocket PC 317
- Windows programming 4.1K
- Software Development 870
- Algorithms 400
- Object Orientation 67
- Project Management 80
- Quality & Testing 87
- Security 230
- WEB-Development 7.3K
- Active Server Pages 1.8K
- AJAX 61
- Bootstrap Themes 1
- CGI Development 55
- ColdFusion 19
- Flash development 221
- HTML & WEB-Design 1.4K
- Internet Development 1.3K
- JavaScript 2.2K
- JQuery 33
- WEB Servers 275
- WEB-Services / SOAP 100

We have migrated to a new platform! Please note that you will need to reset your password to log in (your credentials are still in-tact though). Please contact lee@programmersheaven.com if you have questions.

Tweets by @pheaven
Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

hetbrouwertje
Posts: **2**Member

in Pascal

Hello,

some time ago I started to learn Turbo Pascal.

Now I've got a complex question, for me that is.

I want to write a program that prints out Pascal's Triangle.

But I'm stuck since I started to figure out how to write this program.

The program has to ask the user how many rows it has to display, after that the program should give Pascal's Triangle up to the number of rows the user has determined.

I hope someone can help me with this problem.

I'm too stuck ;)

Thanks for helping me!

Pepijn de Brouwer

some time ago I started to learn Turbo Pascal.

Now I've got a complex question, for me that is.

I want to write a program that prints out Pascal's Triangle.

But I'm stuck since I started to figure out how to write this program.

The program has to ask the user how many rows it has to display, after that the program should give Pascal's Triangle up to the number of rows the user has determined.

I hope someone can help me with this problem.

I'm too stuck ;)

Thanks for helping me!

Pepijn de Brouwer

About & Contact / Terms of use / Privacy statement / Publisher: Lars Hagelin

Programmers Heaven articles / Programmers Heaven files / Programmers Heaven uploaded content / Programmers Heaven C Sharp ebook / Operated by CommunityHeaven LLC

© 1997-2013 Programmersheaven.com - All rights reserved.

## Comments

19Member:

: some time ago I started to learn Turbo Pascal.

: Now I've got a complex question, for me that is.

:

: I want to write a program that prints out Pascal's Triangle.

: But I'm stuck since I started to figure out how to write this program.

:

: The program has to ask the user how many rows it has to display, after that the program should give Pascal's Triangle up to the number of rows the user has determined.

:

: I hope someone can help me with this problem.

: I'm too stuck ;)

:

: Thanks for helping me!

:

:

: Pepijn de Brouwer

:

Hi Pepijn!

In the first line will 1, in the second will 1 and 1. In all lines the first and last element will be 1.

In pursuance (in counting ...) there are 3 versions for getting non-winger elements:

a) count them as sum of two elements "above" them:

1

1 1

1 2 1

1 3 3 1

...

But for this You need store at one time at least half of elements of the last line. For this You need static or dinamic array, and for large line numbers large memory.

b) for these elements one-by-one use the binomial coefficients' formula by expression "k under n", that is (you have see two-lines-height parentheses ...),

/n

k/

where "k under n" = n!/(k!*(n-k)!); here x! (i.e. factorial of x) = 1*2*3*4*...*(x-1)*x, while 0!=1.

In our case k = 0...n is the index of elements in one (in the nth) line.

This method isn't require many memory, but counting of factorials on the one hand is time-waster, on the second it results very large numbers while the elements still aren't large.

c) the simplest way is based on equality

(k under n) = (k-1 under n) * (n - (k-1)) / k.

This formula follows from previous formula in section b.

The program, using this method:

[code]

Program Pascal_Triangle;

var

NMax,

N,

K,

E : longint;

begin

Write ('How many lines: ');

ReadLn (NMax);

for N := 0 to NMax-1 do begin

E := 1; (* for K=0; this is "0 under N" *)

Write (E);

for K := 1 to N do begin

(* (K u N) = (K-1 u N) * (N - (K-1)) / K : *)

E := E * (N - K + 1) div K;

Write (' ', E);

end;

WriteLn;

end;

end.

[/code]

Best regards:

gyapesz

- Spam

0 · Vote Down Vote Up ·2MemberBut this brings me to another question.

Can someone help me figure out what the variables stand for?

What do Nmax, N, K and E mean?

I guess 'Nmax' gives the number of rows, but I'm not sure.

Thanks for helping me out in advance!

Pepijn de Brouwer

- Spam

0 · Vote Down Vote Up ·19Member:

: But this brings me to another question.

: Can someone help me figure out what the variables stand for?

: What do Nmax, N, K and E mean?

: I guess 'Nmax' gives the number of rows, but I'm not sure.

:

: Thanks for helping me out in advance!

:

:

: Pepijn de Brouwer

:

Hi Pepijn!

NMax

is the requested number of rows.

N = 0..NMax-1

is the index (running counter) for the rows.

K = 0..N (N is other for each row)

is the index (running counter) for elements in the Nth row; but because of algorithm's method, for K=0 we calculate the element separately and the rows' _cycles_ will run for K=1..N only.

E

is the running element; it's value is recalculated (and printed) for each element of each row, one by one.

in example below NMax = 5:

[code]

1 N=0 K=0 (=N) E= 1

1 1 N=1 K=0..1 (=N) E= 1, then 1

1 2 1 N=2 K=0..2 (=N) E= 1, then 2, then 1

1 3 3 1 N=3 K=0..3 (=N) E= 1, 3, 3, 1

1 4 6 4 1 N=4 (=NMax-1) K=0..4 (=N) E= 1, 4, 6, 4, 1

[/code]

Best regards

gyapesz

- Spam

0 · Vote Down Vote Up ·