E26. Write a function that has three int parameters a , b , and c and returns the
value of the statement “ a , b , c are the lengths of the sides of a triangle”. Three
such values form the lengths of the sides of a triangle if and only if a≤b+c , b
≤c+a , and c≤a+b .
E27. Write a procedure that has three int parameters a , b , and c and returns one
of these strings: "equilateral" (meaning the sides have the same length),
"isosceles" (only two sides are equal), "triangle" (no sides equal, but they
form a triangle; see the previous exercise), or "not a triangle" .
E28. Write a function that has as its parameters the lengths a , b , and c of a tri-
angle and returns the area of the triangle. Let s be 1/2 the perimeter of the tri-
angle. Then the area of the triangle is the square root of the expression s*(s-
a) * (s - b) * (s - c) .
E29. Write a procedure that has as its parameters the (two) lengths of the sides
of a rectangle and prints: the area, the perimeter, and the length of the diagonal.
E30. Write a function with an int parameter n , with the precondition that
0≤n<1000 , and returns the three digits of the number (with leading zeros if nec-
essary) with a blank between adjacent digits. For example, for argument 43 , the
string "0 4 3" is returned.
E31. Write a function that is given the coordinates (x 1 , y 1 ) , (x 2 , y 2 ) of two
points and returns the distance between them: the square root of (x 1 -x 2 ) 2 +
(y 1 -y 2 ) 2 .
E32. Write a function that is given a letter in A..Z and returns the corresponding
digit on the telephone. Here is the translation: 2:ABC , 3:DEF , 4:GHI , 5:KHL,
6:MNO , 7:PRS , 8:TUV , and 9:WXY . For Z , return -2 , and for Q , return 1 .
E33. Turn to lesson page 2-1 of the CD ProgramLive and click the Project icon.
Do Project Dates, which asks you to write 5-6 functions that manipulate dates in
E34. Write an if-statement that swaps (exchanges) the values of int variables b
and c , if necessary, so that the larger of the two is in c .
E35. Is it possible to write the body of procedure swap , shown below, so that it
is consistent with its specification? For example, if you write a call swap(d,
e); , is the larger of d and e guaranteed to be in e after the call? If you do not
fully understand, do not guess. Instead, write the procedure body and then exe-
cute the call to it by hand, using the steps given in Sec. 2.7.2, and see what hap-
pens. Explain your answer.