DataLife Engine > Программирование > Конвертер температур
Конвертер температур22 февраля 2007. Разместил: Дмитрий |
|
Сейчас мы напишем конвертер температур. Т. е. он будет переводить температуры из одной системы в другую (например: из шкалы Кельвина в градусы по шкале Цельсия). Для начала вспомним формулы по которым это все переводится.
Для того, что бы перевести температуру из шкалы Цельсия в температуру по шкале Кельвина, нужно добавить 273 к первоначальному значению. Для того, что бы перевести температуру из шкалы Цельсия в температуру по шкале Фаренгейта, нужно исходное значение умножить на 9 и разделить на 5, затем к результату добавить 32. Этих двух формул нам будет достаточно. Для начала решим, что будем делать все процедурами. Приступаем. Добавляем заголовочный файл iostream.h в программу. Для тех, кто еще не знает как это сделать, напоминаю: #include <iostream.h> Затем пишем тело главной функции. #include <iostream.h> int main(){ return(0); } В программе нам потребуется две переменные. Строка, которая будет определять, что нужно сделать и число градусов, которые нужно перевести. Строка представляет собой массив символов. Объявляется она следующим образом: char s[100]; или, если нам нужна строка неограниченной длины: char s[]; В нашем случае, нам нужна строка с тремя символами и переменная типа double (значит с плавающей точкой). Пишем: #include <iostream.h> char eq[3]; double a; int main(){ return(0); } Для начала программа должна прочесть значения eq и a: #include <iostream.h> char eq[3]; double a; int main(){ cin>>eq[1]>>eq[2]; cin>>a; return(0); } Затем, оператором switch мы делаем разбиение и проверку всех возможных значений. eq[1] – символ шкалы из которой нужно перевести (C – Цельсия, K – Кельвина, F – Фаренгейта). eq[2] – символ шкалы в которую надо перевести. Соответственно, eq[1] и eq[2], могут принимать по 3 разных значения. Т. е. в итоге, нам нужно рассмотреть 9 случаев. Рассматриваем: switch (eq[1]){ case 'C': switch (eq[2]){ case 'K' : cout<<"Температура в К: "<<CK(a)<<'n'; break; case 'F': cout<<"Температура в F: "<<CF(a)<<'n'; break; } break; case 'K': switch (eq[2]){ case 'C': cout<<"Температура в С: "<<KC(a)<<'n'; break; case 'F': cout<<"Температура в F: "<<KF(a)<<'n'; break; } break; case 'F': switch (eq[2]){ case 'C': cout<<"Температура в С: "<<FC(a)<<'n'; break; case 'K': cout<<"Температура в К: "<<FK(a)<<'n'; break; } break; default : cout<<"Вы ввели неверные символы."<<'n'; break; } Надеюсь понятно почему именно так. (Если нет, то перечитайте еще раз и напишите в каком именно месте непонятно в комментарии.) Но, как вероятно многие заметили, я использовал 6 функций с параметрами. В функциях идет расчет значений и каждая функция возвращает уже готовое значение. Привожу код всех функций: double CK(double a){ return(a+273); } double CF(double a){ return((a*9)/5+32); } double KC(double a){ return(a-273); } double FC(double a){ return((-32*5)/5); } double KF(double a){ a=KC(a); a=CF(a); return(a); } double FK(double a){ a=FC(a); a=CK(a); return(a); } Разберем первую: double CK(double a){ return(a+273); } Тип double указывается перед именем переменной, для того, что бы программа знала, какого типа переменную, мы собираемся возвращать. В скобках (), мы указываем параметр функции, который мы будем передавать ей для расчетов. Параметры могут быть разнотипные и их может быть множество. в операторе return();, мы указываем выражение, значение которого должна принять (вернуть) функция. Полный код программы: #include <iostream.h> char eq[3]; double a; double CK(double a){ return(a+273); } double CF(double a){ return((a*9)/5+32); } double KC(double a){ return(a-273); } double FC(double a){ return((-32*5)/5); } double KF(double a){ a=KC(a); a=CF(a); return(a); } double FK(double a){ a=FC(a); a=CK(a); return(a); } int main(){ cout<<"Для перевода из одной системы в другую, введите сперва ту, из которой нужно перевести, затем ту, в которую нужно перевести.n C - температура по шкале Цельсияn F - температура по шкале Фаренгейтаn K - температура по шкале Кельвина n Затем, после нажатия <Enter>, введите кол-во градусов, которые нужно перевести.n"; cin>>eq[1]>>eq[2]; cin>>a; switch (eq[1]){ case 'C': switch (eq[2]){ case 'K' : cout<<"Температура в К: "<<CK(a)<<'n'; break; case 'F': cout<<"Температура в F: "<<CF(a)<<'n'; break; } break; case 'K': switch (eq[2]){ case 'C': cout<<"Температура в С: "<<KC(a)<<'n'; break; case 'F': cout<<"Температура в F: "<<KF(a)<<'n'; break; } break; case 'F': switch (eq[2]){ case 'C': cout<<"Температура в С: "<<FC(a)<<'n'; break; case 'K': cout<<"Температура в К: "<<FK(a)<<'n'; break; } break; default : cout<<"Вы ввели неверные символы."<<'n'; break; } return(0); } До новых программ. Пишите всегда те программы, которые Вам нужны на данный момент и которые Вам интересны. Сегодня лечение зубов без боли возможно - обратитесь к нам! |