Program
Write a program in Matlab to generate Floyd's triangle, until the given rows n. Use the function name floyds.Floyds Triangle - What is floyds triangle?
Floyd's Triangle is a right angle triangle generally used in computer science. Okay what actually is floyds triangle? The answer is simple. First let us assume that we have to print the numbers of floyd's triangle until row 5, then start with number 1. Now fill the first row with the first number 1. Next the second row with next two numbers 2 and 3, Next the third row with the next three numbers 4, 5 and 6 and so on. It should be observed that we are not doing any math with the numbers but we are just arranging in such a way that the given row number will have the row number of columns, for example row 2 will have 2 columns, row three will have 3 columns and so on. If we arrange the numbers in such a way, for 5 rows, the floyds triangle will be as follows:
1 | ||||
2 | 3 | |||
4 | 5 | 6 | ||
7 | 8 | 9 | 10 | |
11 | 12 | 13 | 14 | 15 |
1) Floyds Triangle - Wikipedia
2) Floyds Triangle Rosetta code
Solution
The solution is simple, here we will use the basic concepts of math and solve this problem. Look at the code and you will simply understand it. If you didn't understand the program then please see the explanation section below the program section, and if you still don't understand then I recommend you to go and check out these links below to understand the basic concepts behind the program. Links are as follows:
1) Functions in matlab
2) Introduction to vectors in matlab
3) Sprintf (Matlab functions)
4) disp- Display variables
To download the above program in matlab file format, then click here: floyds.m
Run your code in matlab software and comment your output in the comment box below!
1) Functions in matlab
2) Introduction to vectors in matlab
3) Sprintf (Matlab functions)
4) disp- Display variables
Program
function floyds(n) %this function will generate floyds triangle upto n rows %Before starting to write the program we have to know the total number %of numbers %involved in the floyds triangle upto n rows %By doing some math I have found that the total number of numbers %is found to be % 1 row - 1 % 2 rows - 3 % 3 rows - 6 % 4 rows - 10 % 5 rows - 15 % It can be seen that the number of number is equal to the sum of the % natural numbers of the nth row, which is equal to n*(n+1)/2 %Therefore the last number in the series will be : %last number = (n*(n+1))/2; %We will create a vector in order to store the values in of the given row vec = []; for i = 1:n j = i-1; k = (j*(j+1)/2)+1; vec = [k:i*(i+1)/2]; g = sprintf('%d ',vec); disp(g); end
Explanation
Please do read the theory on how a Floyd's triangle is formed to understand this explanation easily.
I think most of the theory has been covered in the solution section, but also I have written comments for the same. Okay! lets have a look at the code. First I have created a vector to store the values of the Floyd's triangle generated. Now I have started a for loop to go through the numbers from 1 to n so that we can start filling the numbers accordingly. First of all we should understand that the last number in any row of the Floyd's triangle is given by n*(n+1)/2(try this with your values once!). And now coming back to the program we use the for loop to count the rows like 1, 2, 3.... and remember that in this program for loop is not used to create the values of the Floyd's triangle. If we have used the for loop for generating the values in the Floyd's triangle then we have to use the n*(n+1)/2, so that the loop will iterate till the last number in the sequence. But for now let us stick to our program. We will understand the program line by line:
First we have created the for loop from 1 to n - so that we will iterate through the rows of the Floyd's triangle.
In the next line we have create the variable j so that we will get the value of the previous row through which we have iterated.
Next, we have created a new variable k, so that we will get the value of the last number in the last iteration or the last row. As we know that j is the value of the last row, now the last number in the previous row will be j*(j+1)/2, so in the next row the starting number will be 1+(last number in the previous row i.e. (j*(j+1)/2)+1), which is the value of the k variable.
Next we create a vector which gives the output from the value k to the last number in the given row(i*(i+1)/2).
We finally create a variable g and the store the value of sprintf of the vector.
We display the value of g on the output screen.
I have tried to explain the code in such a way that even the beginners can understand this easily. If you have any doubt or didn't understand the code or any part please do contact me so that not only you but also others can get benefit from your suggestion. You can contact me from here: Contact meNext we create a vector which gives the output from the value k to the last number in the given row(i*(i+1)/2).
We finally create a variable g and the store the value of sprintf of the vector.
We display the value of g on the output screen.
Reference
1) printf - How to display (print) vector in matlab - Stackoverflow
This code was highlighted using hilite.me .
Keywords: floyds triangle, matlab function
This code was highlighted using hilite.me .
Keywords: floyds triangle, matlab function