85 lines
2.4 KiB
C
Executable File
85 lines
2.4 KiB
C
Executable File
/*
|
|
[] implement logTemperature()
|
|
[x] take current loop iteration as argument
|
|
[x] print "Enter temperature log #X:"
|
|
[x] take temperature as int
|
|
[x] if higher / lower than constants, print "Temperature X is impossible\n"
|
|
[x] if higher / lower than constants, ask user again
|
|
[x] if valid, print "Logged temperature: X degree Celsius\n"
|
|
[x] implement calculateAbsoluteDifference()
|
|
[x] take two int as argument
|
|
[x] return absolute difference
|
|
|
|
Example:
|
|
Welcome to the temperature logger!
|
|
Enter temperature log #1:-300
|
|
Temperature -300 is impossible
|
|
Enter temperature log #1:30
|
|
Logged temperature: 30 degree Celsius
|
|
Enter temperature log #2:20
|
|
Logged temperature: 20 degree Celsius
|
|
Enter temperature log #3:50000
|
|
Temperature 50000 is impossible
|
|
Enter temperature log #3:25
|
|
Logged temperature: 25 degree Celsius
|
|
The difference of min/max values is 10
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
|
|
#define LOWEST_POSSIBLE_TEMPERATURE (-273) // absolute zero
|
|
#define HIGHEST_POSSIBLE_TEMPERATURE (6000) // approx. temperature of sun's photosphere (of course, temperatures can get higher)
|
|
#define MAX_ITERATION 3
|
|
|
|
int logTemperature(int current_iteration);
|
|
int calculateAbsoluteDifference(int minimum, int maximum);
|
|
|
|
int main(void)
|
|
{
|
|
printf("Welcome to the temperature logger!\n");
|
|
int cur_min = HIGHEST_POSSIBLE_TEMPERATURE; // initialize with highest value to find lower values
|
|
int cur_max = LOWEST_POSSIBLE_TEMPERATURE; // initialize with lowest value to find high values
|
|
|
|
for (int log_index = 0; log_index < MAX_ITERATION; ++log_index)
|
|
{
|
|
int temp = logTemperature(log_index + 1); // +1 to start with 1 instead of 0
|
|
if(temp < cur_min)
|
|
{
|
|
cur_min = temp;
|
|
}
|
|
if(temp > cur_max)
|
|
{
|
|
cur_max = temp;
|
|
}
|
|
}
|
|
|
|
int diff = calculateAbsoluteDifference(cur_min, cur_max);
|
|
printf("The difference of min/max values is %d\n", diff);
|
|
return 0;
|
|
}
|
|
|
|
int calculateAbsoluteDifference(int minimum, int maximum)
|
|
{
|
|
return maximum - minimum;
|
|
}
|
|
|
|
int logTemperature(int current_iteration)
|
|
{
|
|
int temperature = 0;
|
|
|
|
printf("Enter temperature log #%d:", current_iteration);
|
|
scanf("%d", &temperature);
|
|
|
|
if(temperature > HIGHEST_POSSIBLE_TEMPERATURE || temperature < LOWEST_POSSIBLE_TEMPERATURE)
|
|
{
|
|
printf("Temperature %d is impossible\n", temperature);
|
|
temperature = logTemperature(current_iteration);
|
|
}
|
|
else
|
|
{
|
|
printf("Logged temperature: %d degree Celsius\n", temperature);
|
|
}
|
|
|
|
return temperature;
|
|
}
|