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);
}


До новых программ. Пишите всегда те программы, которые Вам нужны на данный момент и которые Вам интересны.


Сегодня лечение зубов без боли возможно - обратитесь к нам!