Description
Problem 1. This problem deals with inscribed circles. An inscribed circle is a circle which
fits maximally (with respect to area) inside another shape. In this problem we are interested
in circles inscribed within squares and triangles. Figure 1 shows a circle inscribed inside of a
square. Figure 2 shows a circle inscribed inside of a triangle. In this problem you must devise
an algorithm (try not to google it!) for determining the area of the square (resp. triangle)
excluding the area of the inscribed circle. That is, the coloured regions in each figure (the
blue region in Figure 1 and the green region in Figure 2). Let us call the algorithm which
computes areas with respect to the square the “square algorithm”. Let us call the algorithm
which computes areas with respect to the triangle the “triangle algorithm”.
ℓ
Figure 1: A circle inscribed inside of a
square.
𝑂
𝐴
𝐵
𝐶
𝑐
𝑎
𝑏
Figure 2: A circle inscribed inside of a
triangle.
The written portion of this assignment is to define pseudo-code for each of those algorithms.
1. The square algorithm takes as input the side length ℓ of the square.
2. The triangle algorithm takes as input the 3 pairs of numbers (𝑥𝐴, 𝑦𝐴), (𝑥𝐵, 𝑦𝐵), (𝑥𝐶, 𝑦𝐶)
which define the Cartesian coordinates of the vertices of the triangle.
3. Your algorithm and subsequent program only needs to handle non-negative
integer inputs.
4. In your pseudo-code work generically with variables and not instances of the problem.
The programming portion of this assignment is to implement both algorithms within the
same program. To facilitate this consider the following functional specifications for your
program.
1. The program should begin by prompting the user with the question “Is your circle
inscribed in a square or a triangle?” and receiving some string as input.
2. If the user responds with “s”, “S”, “square”, “Square”, or any combination of uppercase
and lowercase letters which spell the word “square”, then your program computes the
“square algorithm”.
2
3. If the user responds with “t”, “T”, “triangle”, “Triangle”, or any combination of uppercase and lowercase letters which spell the word “triangle”, then your program computes
the “triangle algorithm”.
4. If the user’s input does not match any of the previous two cases then your program should print “Sorry, your input was: . This program accepts
one of “square” or “triangle”” where is replaced by the actual input of
the user. The program should then terminate without computing anything.
5. For the square algorithm:
(a) The program should then prompt the user with “The square’s side length: ” and
then receive as input a positive integer which is the square’s side length.
(b) Compute and print the area of the inscribed circle to a precision of 3 digits after
the decimal place. Include a meaningful message describing what the value is (e.g.
The area of the inscribed circle is: 23.345).
(c) Compute and print the area of the square excluding the area of the inscribed
circle (i.e. the blue shaded region) to a precision of 3 digits after the decimal
place. Include a meaningful message describing what the value is.
6. For the triangle algorithm:
(a) The problem should prompt the user with some meaningful text to enter the 3
coordinates (6 non-negative integer numbers in total) which are the coordinates
of the vertices of the triangle. How you prompt the user and how you get these 6
values is up to you.
(b) Compute and print the coordinates of the center of the inscribed circle to a precision of 2 digits after the decimal place. Include a meaningful message describing
what the value is.
(c) Compute and print the area of the inscribed circle to a precision of 4 digits after
the decimal place. Include a meaningful message describing what the value is.
(d) Compute and print the area of the triangle to a precision of 4 digits after the
decimal place. Include a meaningful message describing what the value is.
(e) Compute and print the area of the triangle excluding the area of the inscribed
circle (i.e. the green shaded region) to a precision of 3 digits after the decimal
place. Include a meaningful message describing what the value is.
7. If, at any time, the user inputs a non-number where a number is expected, the program
should output “Sorry, was not a number.” where is replaced by
the actual input of the user.
Some useful information.
• To test if a string is an integer you can use the isnumeric() method.
isANumber = “245”.isnumeric()
3
• The distance 𝑑 between two Cartesian points 𝑝1 = (𝑥1, 𝑦1) and 𝑝2 = (𝑥2, 𝑦2) is
𝑑 =
⌈︂
(𝑥1 − 𝑥2)
2 + (𝑦1 − 𝑦2)
2
• The area of a circle with radius 𝑟 is
𝐴𝑟𝑒𝑎 = 𝜋𝑟2
• The area of a triangle with side lengths 𝑎, 𝑏, 𝑐 is
𝐴𝑟𝑒𝑎 =
⌈︂
𝑠(𝑠 − 𝑎)(𝑠 − 𝑏)(𝑠 − 𝑐), 𝑠 =
(𝑎 + 𝑏 + 𝑐)
2
• Given the Cartesian coordinates of a triangle’s vertices 𝐴 = (𝑥𝐴, 𝑦𝐴), 𝐵 = (𝑥𝐵, 𝑦𝐵), 𝐶 =
(𝑥𝐶, 𝑦𝐶), the center of the triangle’s inscribed circle is 𝑂 = (𝑥𝑂, 𝑦𝑂),
𝑥𝑂 =
(𝑎𝑥𝐴 + 𝑏𝑥𝐵 + 𝑐𝑥𝐵)
𝑝
, 𝑦𝑂 =
(𝑎𝑦𝐴 + 𝑏𝑦𝐵 + 𝑐𝑦𝐶)
𝑝
where 𝑝 is the triangle’s perimeter 𝑝 = 𝑎 + 𝑏 + 𝑐. Note that side 𝑎 is opposite vertex 𝐴;
similarly for 𝑏 and 𝑐 (see Figure 2).
• The radius 𝑟 of a circle inscribed in a triangle with side lengths 𝑎, 𝑏, 𝑐 is
𝑟 =
⌈︂
𝑠(𝑠 − 𝑎)(𝑠 − 𝑏)(𝑠 − 𝑐)
𝑠
, 𝑠 =
(𝑎 + 𝑏 + 𝑐)
2
4