Проектирование классов в C++ Builder: класс температуры

Печать E-mail
(26 голосов)
Автор Administrator   
01:08:2008 г.
Описание и графическое представление класса.
Предметная область программирования. Единицы измерения температуры.
Температуру измеряют градусами по шкале Цельсия и градусами по шкале Фаренгейта. Эти шкалы связаны соотношением:
F=9/5C+32
Форма записи температуры в градусах Цельсия t,t°C
Форма записи температуры в градусах Фаренгейта t,t°F
Например, 10 целых, 5 десятых градуса по шкале Цельсия будут записаны как
10,10°С,
а 15 целых, 7 десятых градуса по шкале Фаренгейта как
15,7°F.
Необходимо спроектировать класс  temperature
Класс temperature содержит два поля
- celye для хранения целой части градуса, типа int;
- desyatye для хранения десятой части градуса типа int;

 Класс temperature содержит следующие методы:
- temperature() –конструктор по умолчанию;
- temperature(int,int) – конструктор с параметрами;
- tempToStrC() – метод, значение градуса в заданном формате (по Цельсию);
- tempToStrF()– метод, значение градуса в заданном формате (по Фаренгейту);
- FToC() – метод, осуществляющий перевод температуры из шкалы Фаренгейта в градусы по Цельсию;
- CToF()– метод, осуществляющий перевод температуры из шкалы Цельсия в градусы по Фаренгейту;
- gettemperature() – метод, получающий значения полей с клавиатуры.

 

Программный код

#include <vcl.h>

#include <math.h>

#pragma hdrstop

#include "lr1pis.h"

#pragma package(smart_init)

#pragma resource "*.dfm"



class temperature

{

private:

int celye;

int desyatye;

public:

temperature():celye(0),desyatye(0){}

temperature(int c, int d):celye(c),desyatye(d){}

AnsiString tempToStrC()

{ AnsiString A;

if (celye>=0 && desyatye>=0)

A=IntToStr(celye)+","+IntToStr(desyatye)+"°"+"C";

if (celye<0 && desyatye>=0)

A=IntToStr(celye)+","+IntToStr(desyatye)+"°"+"C";

if (celye==0 && desyatye<0)

A="-"+IntToStr(celye)+","+IntToStr(-desyatye)+"°"+"C";

if (celye<0 && desyatye<0)

A=IntToStr(celye)+","+IntToStr(-desyatye)+"°"+"C";

return A;

}

AnsiString tempToStrF()

{

AnsiString A;

if (celye>=0 && desyatye>=0)

A=IntToStr(celye)+","+IntToStr(desyatye)+"°"+"F";

if (celye<0 && desyatye>=0)

A=IntToStr(celye)+","+IntToStr(desyatye)+"°"+"F";

if (celye==0 && desyatye<0)

A="-"+IntToStr(celye)+","+IntToStr(-desyatye)+"°"+"F";

if (celye<0 && desyatye<0)

A=IntToStr(celye)+","+IntToStr(-desyatye)+"°"+"F";

return A;

}

temperature FToC()

{

AnsiString A=IntToStr(celye)+','+IntToStr(desyatye);

float t1=StrToFloat(A);

float t2=(t1-32)/1.8;

int c=(int)t2;

int d=(int)((t2-c)*100);

return temperature(c,d);

}

temperature CToF()

{

AnsiString A=IntToStr(celye)+','+IntToStr(desyatye);

float t1=StrToFloat(A);

float t2=1.8*t1+32;

int c=(int)t2;

int d=(int)((t2-c)*100);

return temperature(c,d);

}

void gettemperature()

{

AnsiString A;

A=InputBox("Температура","Введите целую часть градуса","0");

celye=StrToInt(A);

A=InputBox("Температура","Введите десятую часть градуса","0");

desyatye=StrToInt(A);

}

};

temperature cels1;

temperature cels2;

temperature far1;

temperature far2;

TForm1 *Form1;

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{}

void __fastcall TForm1::Button1Click(TObject *Sender)

{

cels1.gettemperature();

Edit1->Text=cels1.tempToStrC();

}

void __fastcall TForm1::Button2Click(TObject *Sender)

{

far1=cels1.CToF();

Edit2->Text=far1.tempToStrF();

}

void __fastcall TForm1::Button3Click(TObject *Sender)

{

far2.gettemperature();

Edit4->Text=far2.tempToStrF();

}

void __fastcall TForm1::Button4Click(TObject *Sender)

{

cels2=far2.FToC();

Edit3->Text=cels2.tempToStrC();}

 
 
 
 
 

печатная продукция печать грамот бренд волл печать стоимость украина