Average temperature
A week of weather readings arrives on standard input: first how many there are, then the temperatures themselves, which can have a fractional part and can be below zero. Store them in the temps array in .bss (room for 32 doubles), then print their average to two decimal places and how many readings were strictly above it.
With the stdin box as given the program prints:
average = 15.32
above average: 3
Read each temperature with scanf and %lf, which stores an 8-byte double at the address in x1. The sum needs fadd, and the division needs the count as a double too: scvtf converts an integer register to one. printf takes a double argument in d0, and it may change d0 to d7 itself, so count the readings above the average before you print anything.
Two counts need their own answer:
- 0 readings: print
no readings(there is nothing to divide by) - a count below 0 or above 32: print
between 0 and 32 readings, pleaseand return 1
What is checked
- both lines for the readings in the stdin box, and for more sets of readings you cannot see
- the exit status (0, or 1 for a count out of range)
- the arithmetic is floating point (
fadd,fdiv, andscvtfpresent)
specification
faddfdivscvtfWe run your program on the input above and on the hidden ones, and compare what it does. Nothing is matched against a stored solution.