Skip to main content

Volume of pyramid in using Matlab

Problem

Write a script to calculate the volume of a pyramid, which is 1/3 * base * height, where the base is length * width. Prompt the user to enter values for the length, width, and height, and then calculate the volume of the pyramid. When the user enters each value, he or she will then also be prompted for ‘i’ for inches or ‘c’ for centimeters. (Note: 2.54 cm  = 1 inch.) The script should print the volume in cubic inches with three decimal places. As an example, the output format will be:

This program will calculate the volume of a pyramid.
Enter the length of the base: 50
Is that i or c? i
Enter the width of the base: 6
Is that i or c? c
Enter the height: 4
Is that i or c? i
The volume of the pyramid is xxx.xxx cubic inches.

Solution

This problem has been taken from the book A Practical introduction to Matlab by stormy Attaway. This is a must read book for Matlab programmers. This will make your path to success in Matlab easy and yes you will become a pro in Matlab after reading this book.
The above problem can be solved using a couple of if else statements. In this problem we will ask the user to give the input of the length of base and the we will ask if the user has entered the value of base in inch or centimeter. If the user has entered the value in cm then we will convert the value in inch and replace the value of the base in inch instead in cm. If the user has entered the value in inch then we will not change anything. In the similar way we will ask the user to enter the width of the base and height of the pyramid check if the user has entered the value in cm and convert the value to inch.
Refer to the program section first and try to understand what is going on in the program and if you have any doubt then refer to the explanation section to see the detailed explanation of the program.
To solve the problem, so of the concepts you need to know are as follows:
1) How to stop a script if condition is not met?
2) fprintf in Matlab
3) request user input
4) if, elseif, else in Matlab
5) return in Matlab
6) Matlab comments

Program

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
%This program will calculate the volume of pyramid

fprintf('This Program will calculate the volume of a pyramid\n')

length_base = input('Enter the length of the base: ');
units_length_base = input('Is that i or c? ','s');

if units_length_base == 'c'
    length_base = length_base/2.54;
elseif units_length_base == 'i'
    length_base = length_base;
else
    fprintf('You have entered a wrong input!\n');
    return
end
width_base = input('Enter the width of the base: ');
units_width_base = input('Is that i or c? ','s');

if units_width_base == 'c'
    width_base = width_base/2.54;
elseif units_width_base == 'i'
    width_base = width_base;
else
    fprintf('You have entered a wrong input!\n');
    return
end

height = input('Enter the height: ');
units_height = input('Is that i or c? ','s');

if units_height == 'c'
    height = height/2.54;
elseif units_height == 'i'
    height = height;
else
    fprintf('You have entered a wrong input!\n');
    return
end

volume = length_base*width_base*height/3;
fprintf('The volume of the pyramid is %.4f\n',volume);
I have saved this program as pyramid.m in my local computer.

Explanation

Line 1: This is a Matlab comment. This states what this program is meant for. This is like heading for the article for programmers and the users will not be able to see this.
Line 3: This fprintf will display the user what the program will do.
Line 5: Ask the user to input the length of the base of the pyramid
Line 6: Ask the user to input the units of the length of the base of the pyramid that the user has entered. I think you have observed a 's' after the text that is displayed to the user. 's' means that the user will enter a string and not a number. We will have to specify this because Matlab by default assumes that the user will input a number and if you have not specified the 's' then Matlab will raise an error to the user saying that he has entered a wrong input and if the user is not a Matlab programmer he will get mad seeing this error and will not use your software, :) Because first impression is the best impression!!
Line 8-15: These are if elseif and else statements. First in the if statement I am checking that if the user has entered the units as 'c', if the user has entered 'c' then this if statement gets executed and the value of the length_base gets converted from centimeters to inches. This assures that we get our output in cubic inches. Elseif the user has entered the value in 'i', then we are keeping the same. You might have a doubt why I have created an elseif statement. If I have not created this statement then if the user will enter 'i', then the else statement will get executed and the user will get a error even if he/she is correct. So I have added this elseif. Finally the else statement gets executed if the user has not entered any of 'c' or 'i'. Remember that in an if elseif and else statements only one of these gets executed. If anyone of them gets executed then the remaining are not executed. You can see that there is return at the end of the else statement. What does return mean in Matlab code? It means that the program has done whatever it has to do and so Matlab(computer), stop further running of the program and come back to prompt mode as usual(i.e. it will stop running the program and show the >> so that the user can use the interpreter again.)
Line 16-38: These all lines are the repetitions of Line 5-15 but they are asking the user for different input and the values are being stored in corresponding variables. 
Line40: Here the value of the volume is calculated based on the formula given in the question and the value is stored in volume variable.
Line 41: The user is displayed with a beautiful output showing the value of the volume for the value of the corresponding variables he/she has entered. The output will show upto 4 numbers after decimals because we have used '.4f' stating that round off the numbers upto 4 decimals and show the value.

Input/output

Calculate the volume of the pyramid using matlab. Matlab session. inches and centimeters can be entered
volume of pyramid calculations using Matlab

Try it yourself

1) There is a bug in the program which I have created. Find out what the bug is and comment in the comment box below. 
2) Modify the above program such that the user can also enter the value in foot a third option. But the output should be in cubic inches. Comment your program in the comment box below and help others who were not able to solve the problem.
3) Modify the program so that the user can also select the units in which the output can come. Eg: User will be prompted with two options for cubic inches and cubic centimeters. Comment your program in the comment box below so that other user can get help from your program.

Final Note

As always I have tried to explain the post in such a way that it is easy for everyone to understand, but if you have any doubt or couldn't understand anything then please do contact me or comment in the comment box below. You can contact me from here: Contact me.
The above program was high lighted using hilite.me web app.
The problem has been taken from stormy attway's book - introduction to programming with Matlab. Thanks to the excellency of the book.
Keywords: pyramid, return

Popular posts from this blog

Making a quiz web app with python and flask

Edit : When you are creating a web app with h tml templates, then y ou will have to sa ve the html file in templates folder in the Current Wor ki ng Directory( CWD). If you save the file in the C W D directl y you will get a TemplateNotFound error. Thank you Udhay for pointing it out.   In this post we will create a quiz website using python . I will be using the flask framework . After reading this tutorial you will learn form submission , flask templates , python code in flask templates , shuffling the questions and options with the random module and few others.  Please note that this tutorial is not big as it seems to be. Some of the code has been rewritten to maintain consistency and also font size is somewhat big so that your eyes won't get stressed reading this tutorial. Also the content has not occupied the full width of the page. In this tutorial I am assuming that you are having a very basic understanding of the flask framework . Please refer the documentation

Problem 11 Project Euler Solution with python

Largest product in a grid In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07

Problem 60 Project Euler Solution with python

Prime pair sets The primes 3, 7, 109, and 673, are quite remarkable. By taking any two primes and concatenating them in any order the result will always be prime. For example, taking 7 and 109, both 7109 and 1097 are prime. The sum of these four primes, 792, represents the lowest sum for a set of four primes with this property. Find the lowest sum for a set of five primes for which any two primes concatenate to produce another prime. This problem is j u st a brute force problem. If you have come here because you don't know the limit upto which you will h ave to gener ate the prime numbers t hen go ahe ad and t r y with 10,000 . When I first start ed solving the problem I chose 1 million(beca use most of the problem s on project E uler have this limit ), but it took very long for the computer to fin d the solution. After searching on the internet then I found many people choosing 10, 000 so I have changed my in put f rom 1 million to 10000 and the output was f ast. He