Algorithm 1: Calculating temperature statistics over a month
1. Draw a defining diagram for the following problem statement
A program that will prompt for and receive the measurements of a rectangle and then calculate the circumference (perimeter) and the area of the rectangle. The program is to continue until a sentinel of 999 is entered.
2. Develop a solution algorithm for a program that prompts for and obtains the daily temperatures for a whole month and displays the average, minimum, maximum temperature for that month. Your solution should contain a defining diagram, a pseudocode algorithm and a desk check of the algorithm
Your algorithm should first prompt the user for the number of days in the month (x) and then request the user to enter x temperature values. If the user enters a negative number for x then an appropriate message should be displayed.
Once the x number of temperatures have been entered, your algorithm must calculate and display the average, minimum and maximum temperature.
3. Develop an algorithm for the following problem statement using appropriate modularisation techniques. Your solution should contain a defining diagram, a pseudocode algorithm and a desk check of the algorithm.
Your algorithm will produce a list of students from a student file. The file has a record for each unit attempted and result achieved in that unit for each student. Eg. If a student has passed four units and failed two there will be 6 records on the file.
Each record contains the following fields:
Field Name | Data Type |
---|---|
Student Id | Alphanumeric |
Student Name | Alphanumeric |
Unit Code | Alphanumeric |
Unit Result | Numeric |
The algorithm is to read the records from the student file and print a report of all students as well as their results. The report should contain all of the fields properly formatted. For each student there should be a printed summary of their results i.e. a printed line of the number of passed units, the number of failed units and the student’s WAM, the average of all units.
Print page headings and column headings at the top of each page. After printing 50 lines, a new page should be started. At the end of the report, the total number of students; the total number of passed units and the total number of failed units should be printed.
1. Defining diagram is,
Input |
Processing |
Output |
LENGTH BREADTH TOKEN (Enter 999 to stop) |
· Check TOKEN = 999, then STOP. · Calculate CIRCUMFERENCE = 2(LENGTH x BREADTH) |
CIRCUMFERENCE |
2. The defining diagram is,
Input |
Processing |
Output |
NUM_DAYS_MONTH DAILY_TEMP |
· Check NUM_DAYS_MONTH <=0, PRINT ERROR. · Enter daily temperature for NUM_DAYS_MONTH one by one using DAILY_TEMP. · Calculate MIN_TEMP, MAX_TEMP, AVG_TEMP. |
MIN_TEMP, MAX_TEMP, AVG_TEMP |
The Pseudo code is,
ALGORITHM1 (MIN_TEMP = 0, MAX_TEMP=0, TOTAL_TEMP=0)
{
INPUT NUM_DAYS_MONTH
IF NUM_DAYS_MONTH <= 0
PRINT “Enter Positive number”.
ELSE
FOR (i=1 to NUM_DAYS_MONTH)
{
INPUT DAILY_TEMP(i)
SET TOTAL_TEMP = TOTAL_TEMP + DAILY_TEMP(i)
i++
}
AVG_TEMP = TOTAL_TEMP / NUM_DAYS_MONTH
FOR (i=1 to NUM_DAYS_MONTH )
{
IF (DAILY_TEMP (i) <= MIN_TEMP) )
{
MIN_TEMP = DAILY_TEMP (i)
i++
}
}
FOR (i=1 to NUM_DAYS_MONTH )
{
IF (DAILY_TEMP (i) > MAX_TEMP )
{
MAX_TEMP = DAILY_TEMP (i)
i++
}
}
PRINT MAX_TEMP, MIN_TEMP, AVG_TEMP
}
The desk check is,
ALGORITHM1 () |
||||
{ |
||||
INPUT NUM_DAYS_MONTH |
NUM_DAYS_MONTH = 3 |
|||
IF NUM_DAYS_MONTH <= 0 |
FALSE |
|||
PRINT “Enter Positive number”. |
||||
ELSE |
||||
FOR (i=1 to NUM_DAYS_MONTH) |
1 to 3 |
|||
{ |
||||
INPUT DAILY_TEMP(i) |
40 |
30 |
20 |
|
SET TOTAL_TEMP = TOTAL_TEMP + DAILY_TEMP(i) |
TOTAL_TEMP = 40 |
TOTAL_TEMP = 70 |
TOTAL_TEMP = 90 |
|
i++ |
1 |
2 |
3 |
|
} |
||||
AVG_TEMP = TOTAL_TEMP / NUM_DAYS_MONTH |
AVG_TEMP = 30 |
|||
FOR (i=1 to (NUM_DAYS_MONTH )) |
i= 1 to 2 |
|||
{ |
||||
IF (DAILY_TEMP (i) <= MIN_TEMP ) |
TRUE |
TRUE |
||
{ |
||||
MIN_TEMP = DAILY_TEMP (i) |
MIN_TEMP = 30 |
MIN_TEMP = 20 |
||
i++ |
2 |
3 |
||
} |
||||
} |
||||
FOR (i=1 to NUM_DAYS_MONTH ) |
i=1 to 2 |
|||
{ |
||||
IF (DAILY_TEMP (i) > MAX_TEMP) |
TRUE |
FALSE |
||
{ |
||||
MAX_TEMP = DAILY_TEMP (i) |
MAX_TEMP = 40 |
|||
i++ |
2 |
|||
} |
||||
} |
||||
PRINT MAX_TEMP, MIN_TEMP, AVG_TEMP |
MAX_TEMP = 40, MIN_TEMP = 20, AVG_TEMP= 30 |
|||
} |
||||
3. The defining diagram is,
Input |
Processing |
Output |
NUM_RECORDS COUNTER = 0 RECORD(i) |
· Check for NUM_RECORDS · COUNT NUM_FAIL for a STUDENT_ID · COUNT NUM_PASS for a STUDENT_ID |
PRINT 50 RECORDS on each page of REPORT |
The pseudo code is,
ALGORITHM2(COUNTER1=0, COUNTER2=0, Counter3 = 0)
{
INPUT NUMBER_RECORDS
IF NUMBER_RECORDS < 0
PRINT ‘Please enter valid number’.
FOR (i=1 to NUMBER_RECORDS)
{
X= STUDENT_ID(i)
FOR (j = 2 to NUM_RECORDS)
{
IF (X = STUDENT_ID(j))
{
IF (UNIT_RESULT(j) = PASSED
COUNTER1 ++
ELSE
COUNTER2++
}
J++
}
PRINT [STUDENTID, COUNTER1 AS PASSED, COUNTER2 AS FAILED]
PRINT NEW LINE
I++
IF (COUNTER3 >=50)
{
INSERT PAGE BREAK
COUNTER3 = 0
}
ELSE
COUNTER3 ++
}
}
The desk check is,
ALGORITHM2(COUNTER1=0, COUNTER2=0) |
COUNTER1=0, COUNTER2=0 |
next iteration |
next iteration |
{ |
|||
INPUT NUMBER_RECORDS |
3 |
||
IF NUMBER_RECORDS < 0 |
FALSE |
||
PRINT ‘Please enter valid number’. |
|||
FOR (i=1 to NUMBER_RECORDS) |
i= 1 to 3 |
||
{ |
|||
X= STUDENT_ID(i) |
X = STUDENT_ID(1) |
||
FOR (j = 1 to NUM_RECORDS) |
j= 1 to 3 |
j= 2to 3 |
j=3 to3 |
{ |
|||
IF (X = STUDENT_ID(j)) |
TRUE |
TRUE |
FALSE |
{ |
|||
IF (UNIT_RESULT(j) = PASSED |
TRUE |
FALSE |
|
COUNTER1 ++ |
COUNTER1=1 |
||
ELSE |
|||
COUNTER2++ |
COUNTER2 = 1 |
||
} |
|||
J++ |
j = 2 |
j=3 |
j=3 |
} |
|||
PRINT [STUDENTID, COUNTER1 AS PASSED, COUNTER2 AS FAILED] |
PRINT STUDENT_ID, PASSED =1, FAILED =1 |
||
PRINT NEW LINE |
|||
i++ |
i=2 |
||
IF (COUNTER3 >=50) |
FALSE |
||
{ |
|||
INSERT PAGE BREAK |
|||
COUNTER3 = 0 |
|||
} |
|||
ELSE |
|||
COUNTER3 ++ |
COUNTER3=1 |
||
} |
|||
} |
The process will continue for 3 records. The first two records are for same student in two different subject, one PASSED and another FAILED, the third record is for another student and PASSED.