Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Pascal triangle (http://www.go4expert.com/forums/pascal-triangle-t16804/)

Pascal triangle

I need to create a console program in C that prints out a Pascal triangle in a size given by the user. I can only use one array for this.

Any tips?

 xpi0t0s 5Apr2009 12:19

Re: Pascal triangle

Build the program up bit by bit. Start by generating line p of a q line triangle (e.g. line 5 of a 10 line one).
Use a few fixed constants to get that part debugged.
Then loop from 1 to q again using q as a fixed constant and get that part debugged.
Then it should just be a case of asking the user what q is.

I don't know what you would need an array for though. Each line of a triangle can be computed, so just compute each number and display it. No storage is needed except p and q and a couple of loop variables. But if you want to use an array you could compute each line, store the numbers in the array as you go, then display the array to the screen, but that seems unnecessary.

 xpi0t0s 5Apr2009 12:40

Re: Pascal triangle

Looking at the Wiki article on Pascal's triangle it could be a lot easier to calculate each line from the previous line as per the standard construction.
So get the input from the user and that will tell you (indirectly) the size of the array needed.
This size must be odd, of course.
Place a 1 in the middle and set all other elements to 0.
Then display that line and that will be the top line.
Then calculate the next row just by looking at the array entries and updating them as you go along. You don't need a second array for this as the numbers don't overlap.

Re: Pascal triangle

Quote:
 Originally Posted by xpi0t0s (Post 45325) Looking at the Wiki article on Pascal's triangle it could be a lot easier to calculate each line from the previous line as per the standard construction. So get the input from the user and that will tell you (indirectly) the size of the array needed. This size must be odd, of course. Place a 1 in the middle and set all other elements to 0. Then display that line and that will be the top line. Then calculate the next row just by looking at the array entries and updating them as you go along. You don't need a second array for this as the numbers don't overlap.
Should I make a rectangle and fill it with zeros, which won't be displayed, and place the appropriate numbers to make a triangle out of it?

From what I checked, for a triangle of size n, you need n rows and 2n-1 colums. for ex. a triangle of 3 rows would need 5 colums, like so:
00100
01010
10201

and when the zeros are elimintated you will have the triangle.
But to tell you the truth, I have no idea how to implement this...

Re: Pascal triangle

Okay, I found a code for doing exactly this at:

http://www.c.happycodings.com/Beginn...ts/code45.html

 xpi0t0s 5Apr2009 17:03

Re: Pascal triangle

That's how I would have done it, yes. Except that I would only use a single row. So when calculating the 2 in the above, I would calculate that with arr[i]=arr[i-1]+arr[i+1].
Then as I would be looping over the string from left to right I would be able to zero the values that are no longer any use (after calculating the 2 for example, there is no further need for the first 1, i.e. on the row 01010 the one where the asterisk is in this: 0*010).

> But to tell you the truth, I have no idea how to implement this...

OK. Well, suppose I would ask for a 5 line triangle. How long would the array need to be? You already know for a 3 line triangle you need an array 5 long.

Think of a few example row counts, then work out the array length for each, and you should be able to determine from that a general expression that will give you the array size for any row count.

 xpi0t0s 5Apr2009 17:30

Re: Pascal triangle

Quote:
 Originally Posted by ShaiAdar (Post 45331) Okay, I found a code for doing exactly this at: http://www.c.happycodings.com/Beginn...ts/code45.html
Yes, but there are two problems with this:

(1) you learn absolutely NOTHING about programming just by copying that. Far better to work it out yourself.

(2) if this is a course assignment, your teacher may well spot this, and plagiarism could score you zero even if the code works perfectly. Even if they give you full marks, you still learn nothing.

Programming is learnt by doing, unfortunately, which is the whole point of you being given exercises to do rather than example programs to look at.

Re: Pascal triangle

Of course,
I was not planning on copying it word by word. I just wanted to use it to understand how to program it myself.