129k views
5 votes
[20 pts] Write the function rectangle(perimeter, area), which takes two positive integers, perimeter and area. It returns an integer which is the length of the longest side of a rectangle with integer side lengths w and h which has the given perimeter and area. If no such rectangle exists, it returns None. As a reminder the perimeter of a rectangle with sides w and h is 2w + 2h. The area is w * h. Hint: The built-in function round takes a number as its argument and returns the nearest integer. For example, round(4.0) returns 4, round(4.3) returns 4, and round(4.7) returns 5. Similarly, to do integer division and get an integer result, discarding any fractional result, there is another operator, //, which performs floor division Example: rectangle(14, 10) will return 5 because a 2 x 5 rectangle 5 is the longest side of a rectangle with perimeter 14 and area 10 rectangle(25, 25) will return None because a 2.5 x 10 rectangle does not have integer side lengths

User Veliko
by
4.7k points

1 Answer

4 votes

Hi, you haven't provided the programing language in which you need the code, I'll explain how to do it using Python, and you can follow the same logic to make a program in the programing language that you need.

Answer:

import math

def rectangle(perimeter, area):

l1_1 = (perimeter+math.sqrt((perimeter**2)-(16*area)))/4

l1_2 = (perimeter-math.sqrt((perimeter**2)-(16*area)))/4

l2_1 = area/l1_1

l2_2 = area/l1_2

print(l1_1,l2_1)

print(l1_2,l2_2)

if l1_1.is_integer() and l2_1.is_integer() and l1_1>0 and l2_1>0:

return(int(max(l1_1,l2_1)))

elif l1_2.is_integer() and l2_2.is_integer() and l1_2>0 and l2_2>0:

return(int(max(l1_2,l2_2)))

else:

return(None)

Step-by-step explanation:

  • We import math to make basic operations
  • We define the rectangle function that receives perimeter and area
  • We calculate one of the sides (l1_1) of the rectangle using the quadratic equation to solve 2h^2 - ph + 2a = 0
  • We calculate the second root of the quadratic equation for the same side (l1_2)
  • We calculate the second side of the rectangle using the first root on w = a/h
  • We calculate the second side of the rectangle using the second root on w= a/h
  • We verify that each component of the first result (l1_1, l2_1) is an integer (using the build-in method .is_integer) and greater than 0, if True we return the maximum value between them (using the max function) as w
  • If the first pair of sides evaluate to False we check the second root of the equation and if they meet the specification we return the max value
  • if all the if statements evaluate to false we return None to indicate that not positive or integer sides were found
[20 pts] Write the function rectangle(perimeter, area), which takes two positive integers-example-1
User Kevin Brown
by
4.9k points