Student Name Syed Haseeb Hashmi Registration # FA11-BCS-075 Course Title Design and Analysis of Algorithm Assignment # 1 Submitted To Sir Tanveer Ahmed Siddiqui Due Date 19-03-2013 For Odd Role Number Group Q1. How does a flowchart help a programmer in a program development? Ans. Flowcharts provide the visual representation of a concept and make it clear. A flow chart serves as a blueprint of the program. Flowcharts helps a programmer organize his/her thoughts in a logical order and their presentation.

Program development without graphics may be less effective. In big projects it gets difficult to keep things together. Flowcharts provide flexibility, so that you can make changes and restructure the project as you move further and, according to requirement. Flowcharts act as a guide during the analysis and program development phase. Moreover they are also helpful in debugging process. Q2. Draw a flowchart of the logical steps needed to produce a printed listing of all students over the age of 20 in a class. The input records contain the name and age of the students.

Assume a sentinel value of 99 for the age field of the trailer record. Sol. Q3. The first 20 records in a data set are to be read and printed. Draw a flowchart for the algorithm to do this job. Make sure that the processing stops after the twentieth record. Sol. Q4. For the employees problem of Question 40 ( even group Q3), we want to count and print the number of only male employees in the age group of 25 to 30. Assume that the input records contain SexCode and Age fields to provide this information. Draw a flowchart for the algorithm to perform this job. Sol. Q5.

A set of examination papers, which have been graded with scores form 0 to 100 is to be searched to find how many of them are above 90. The total has to be printed. Prepare a flowchart to do this job. Assume a suitable sentinel value for the trailer record. Sol. Q6. A shopkeeper wants to have a general program for his personal computer, which will prepare bills for each customer as and when he sells goods to them. His idea is that as soon as the customer purchases some goods from his shop, he will supply the description, unit price, and the quantity purchased for each item. s input to the computer. He wants that with this information, the computer should print each item along with its unit price, quantity purchased and the total price. Finally the computer should also print the total cost of all the items purchased by the customer. Assuming a sentinel value of zero for the quantity purchased field in the trailer record, draw a flowchart for the logic to do this job. Q7. Each employee pay record includes the hours worked and the pay rate. The gross pay is to be determined as hours worked times pay rate, and is to be printed for each employee.

For all hours worked in excess of 40, the overtime rate, which is 1. 5 times the regular rate, is to be paid. Draw a flowchart for the problem logic to do this. Assume a suitable sentinel value for any of the input fields of the trailer record. Q8. The data file of Question 48 (even group Q7) is expanded to include several sets of data, each requiring calculation of its average. Each data set is followed by a trailer record with a value of -1; however the last data is followed by a trailer record with a value of -2.

Draw a flowchart for the logic to perform this task. Solution. Q9. Draw a flow chart to add up all the even numbers between 0 and 100. Before ending, print the result of calculation. Solution. Q10. Draw a flowchart for the logic to find out whether a given triangle ABC is a right angled triangle. Assume that the sides are supplied as input and data. Print the answer as yes or no. Solution. Q11. Draw a flowchart for the logic to convert a number from base 10 to new base using division remainder technique. Solution. Question #2 ) Determine which characteristics of an algorithm the following procedures have and which they lack. Procedure 1 double(n:positive integer)// The purpose of this procedure is to double a positive integer while n > =0 do n 2n| Procedure 2 choose(a, b: integers)// The purpose of this procedure is to choose a number from two positive numbers x either a or b| Procedure 3 sum(n:positive integer)// The purpose of this procedure is to find the sum of first 9 digits. sum = 0while i < 10 do sum sum + i| 1.

Procedure 4 divide(n:positive integer) // The purpose of this procedure is to find the reciprocal of a positive integer n till 1. while n>= 0 do m 1/n n n-1| Solution Procedure| Input| Output| Precision| Finiteness| Definiteness| Correctness| Generality| 1| NO| NO| YES| YES| NO| YES| YES| 2| NO | YES| NO| NO| YES| YES| NO| 3| YES| YES| YES| YES| YES| NO| YES| 4| NO| YES| NO| NO| YES| YES| NO| b) Modify above procedure so that they satisfies all the properties Procedure 1: if n >= 0 n 2n Procedure 2: if a>0 && b>0 either a or b Procedure 3: i 0 sum 0 while i < 10 do sum sum + i i++ Procedure 4: While n > 0 do m 1/n n n – 1 Question # 3 a) Find gcd(31415, 14142) by applying Euclid’s algorithm. Sol. gcd(31415%14142) gcd(14142%3131) gcd(3131%1618) gcd(1618%1513) gcd(1513%105) gcd(105%43) gcd(43%19) gcd(19%5) gcd(5%4) gcd(4%1) gcd(1%0) = 1 Answer. b) Estimate how many times faster it will be to find gcd(31415, 14142) by Euclid’s algorithm compared with the algorithm based on checking consecutive integers from min{m, n} down to gcd(m, n). Ans.

The algorithm for finding gcd based on checking consecutive integers will take 14142 steps, whereas the Euclid’s algorithm took just 11 steps. So, 14142/11 we get 1285. We can say that Euclid’s algorithm is 1285 time faster. Question #4 What does Euclid’s algorithm do for a pair of numbers in which the first number is smaller than the second one? What is the largest number of times this can happen during the algorithm’s execution on such an input? Ans. According to Euclid’s algorithm if the first number is smaller the second one then we have to swap the both values.

We will have to swap only once. Question # 5 a) What is the smallest number of divisions made by Euclid’s algorithm among all inputs 1 ? m, n ? 10? b) Ans. For any possible combination of inputs among 1 ? m, n ? 10, the smallest number of division made by Euclid’s algorithm is 1. c) What is the largest number of divisions made by Euclid’s algorithm among all inputs 1 ? m, n ? 10? d) Ans. For any possible combination of inputs among 1 ? m, n ? 10, the largest number of divisions made by Euclid’s algorithm is 5 for (5,8). Question # 6

Euclid’s algorithm, as presented in Euclid’s treatise, uses subtractions rather than integer divisions. Write a pseudo code for this version of Euclid’s algorithm. Ans. If a<b Swap(a,b) While n! =0 a a-b return m. Question # 7 Write a pseudocode for an algorithm for finding real roots of equation ax2 + bx + c = 0 for arbitrary real coefficients a, b, and c. (You may assume the availability of the square root function sqrt(x). ) Ans. Input a,b and c If a>0 X b2-4ac If X < 0 print ‘no real roots exits’ else X1 -b+sqrt(X)/2a X2 -b-sqrt(X)/2a Return X1 and X2.