Программа, которая переводит градусы Кельвина в градусы Цельсия - C (СИ)
Формулировка задачи:
Напишите программу, которая бы переводила градусы Кельвина в градусы Цельсия и наоборот. Проверить введенные значения на отсутствие ошибок.
Решение задачи: «Программа, которая переводит градусы Кельвина в градусы Цельсия»
textual
Листинг программы
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
const double ABS_ZERO = -273.15;
const double ERROR = -300.0;
double cel_to_kel(double cel)
{
if( cel < ABS_ZERO ) return ERROR;
return cel - ABS_ZERO;
}
double kel_to_cel(double kel)
{
if( kel < 0.0 ) return ERROR;
return kel + ABS_ZERO;
}
int main(int argc, char* argv[])
{
double temp;
char buf[10];
char scale;
while( true ) {
puts("Enter temperature");
fgets(buf, sizeof(buf), stdin);
scale = toupper(buf[0]);
if( scale != 'C' && scale != 'K' ) break;
buf[0] = ' ';
temp = atof(buf);
if( temp == ERROR ) break;
if( scale == 'C' ) {
temp = cel_to_kel(temp);
} else {
temp = kel_to_cel(temp);
}
printf("Converted temperature = %0.2f\n", temp);
}
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек:
для работы с булевыми значениями, для работы с вводом/выводом данных и для работы с числами с плавающей точкой. - Объявление констант: ABS_ZERO = -273.15 (абсолютная температура в Кельвинах при которой начинается отсчет в Цельсиях) и ERROR = -300.0 (значение, возвращаемое функцией при ошибке).
- Объявление функций: cel_to_kel(double cel) (переводит температуру из Цельсия в Кельвины) и kel_to_cel(double kel) (переводит температуру из Кельвина в Цельсии).
- Цикл while(true) для бесконечного выполнения программы, пока пользователь не введет неверное значение или не прервет выполнение программы.
- Ввод значения температуры с помощью функции fgets(buf, sizeof(buf), stdin) в буфер buf.
- Определение шкалы ввода температуры (C или K) с помощью функции toupper(buf[0]) и проверка на корректность введенного значения.
- Проверка на корректность введенного значения: если введено не число или некорректная шкала, то выход из цикла с помощью break.
- Выполнение перевода температуры в нужную систему с помощью функции cel_to_kel(temp) или kel_to_cel(temp) и сохранение результата в переменной temp.
- Вывод результата перевода с помощью функции printf(
Converted temperature = %0.2f\n, temp). - Возврат 0 из функции main() означает успешное выполнение программы.