- count.rb
- answers.txt
- area.rb
- multiple.rb
- sum_length.rb
- n_factorials.rb
- ordered.rb
- bcount.rb
- product.rb
- linsearch.rb
- double.rb

Place these files in a `lab5` folder. Before leaving lab,
zip up the `lab5` folder
and hand the zip file in.

- Discussion of debugging techniques
`count.rb`def count(key, list) count = 0 i = 1 while i < list.length do if list[i] == key then count = count + 1 end i = i + 1 end return count end

Each of the following programs has a bug in it. For each program,
first, identify an input for which it gives an incorrect output.
In `answers.txt`, record:

- what input you used to demonstrate the bug,
- what output you expected for each input,
- what output you got instead.

In addition, correct each function and save a copy of that corrected function as indicated.

The area of a triangle is the half of the product of its height

*h*and its base*b*as expressed by the formula\[area = \frac{1}{2}hb.\]

Identify and correct the error in the Ruby function

`area_triangle(h,b)`listed below. It should take a two parameters named`h`and`b`and is intended to return the corresponding value of*area*according to the formula above.def area_triangle(h,b) return 1/2 * h * b end

Save the corrected version as

`area.rb`Identify and correct the error in the following Ruby function, which is meant to return true if

`m`is a multiple of`n`, and return false otherwise.def multipleof?(m, n) if m % n == 0 do return true else return false end end

Save the corrected version of the function as

`multiple.rb`.-
Identify and correct the error in the following Ruby function, which is meant to calculate the sum of the lengths of the strings in string_list.

def sum_length(string_list) for s in string_list do sum = sum + s.length end return sum end

Save the corrected version as

`sum_length.rb`. Identify and correct the error in the following Ruby function, which is meant to print out a table of factorials from 0 to n:

def n_factorials(n) for i in 0..n do x = 1 for j in 1..i do x = x * j print i, "! \tis\t", x, "\n" end end end

Save the corrected version as

`n_factorials.rb`.The Ruby function

`ordered?(k, m, n)`is intended to take three integers as parameters and check if`k < m < n`. Identify and correct the error in the Ruby function listed below.def ordered?(k, m, n) if k < m < n then return true else return false end end

Store the corrected version of the function in

`ordered.rb`.The following function is intended to print the number of occurrences of a given key in a list by counting backwards in the list, starting from the end of the list.

def backward_count(list, key) count = 0 len = list.length for i in (len-1)..0 do if list[i] == key then count = count + 1; end return count end

Save the corrected version of this function as

`bcount.rb`The following Ruby function attempts to calculate and return the product of the numbers in

`list.`Identify and correct the error in this function.def product(list) prod = 1 i = 0 while i <= list.length do prod = prod * list[i] i = i + 1 end return prod end

Store the corrected version of the function in

`product.rb`Consider the following function, which uses recursion to do linear search to find out whether

*key*appears in the array*list*.def linsearch?(list, key) return false if list.length - 1 == 0 return true if list.first == key return search?(list[1..list.length-1], key) end

Put the corrected function in

`linsearch.rb`.The following Ruby functon is intended to compute

*2n*recursively, for positive integers*n.*def double(n) return 2 + double(n-1) return 0 if n == 0 end

Save the corrected version of your function as

`double.rb`.