Created
December 31, 2009 14:59
-
-
Save johnhmj/266757 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <cstdlib> | |
#include <cmath> | |
// 12 Months of a year | |
#define MAX_MONTHS 12 | |
// Integrated Development Environment | |
// Visual C++ | |
using namespace std; | |
// | |
class CArrayType | |
{ | |
public: | |
// Make this->m_p Memory by new Keyword | |
double* m_p; | |
size_t m_length; | |
// Constructor: Initialize All Data Members | |
CArrayType(void); | |
// Destructor: Delete Memory | |
~CArrayType(void); | |
// Check Memory exists or not | |
bool isNullPointer(void); | |
void initializeMemory(void); | |
void BubbleSort(void); | |
double getMinimum(void); | |
double getMaximum(void); | |
}; | |
// | |
class CTemperature{ | |
public: | |
CArrayType m_temperature; | |
double m_average, m_stdev; | |
double m_minimum, m_maxmum; | |
// Constructor: Initialize All Data Members | |
CTemperature(size_t max_months); | |
// Member Functions | |
void GenerateResult(void); | |
void Print(void); | |
private: | |
void Average(void); | |
void StandardDeviation(void); | |
}; | |
// | |
void main(int argc, char** argv) | |
{ | |
CTemperature cmt(MAX_MONTHS); | |
for (size_t i = 0; i < MAX_MONTHS; i ++) | |
{ | |
cout<<"Input Temperature of Month "<<(i + 1)<<": "; | |
cin>>cmt.m_temperature.m_p[i]; | |
} | |
cmt.GenerateResult(); | |
cmt.Print(); | |
system("PAUSE"); | |
} | |
// | |
CArrayType::CArrayType(void) | |
{ | |
this->m_p = NULL; | |
this->m_length = 0; | |
} | |
CArrayType::~CArrayType(void) | |
{ | |
if ( ! this->isNullPointer() ) | |
{ | |
delete this->m_p; | |
} | |
} | |
bool CArrayType::isNullPointer(void) | |
{ | |
if ( this->m_p != NULL ) | |
{ | |
return false; | |
} | |
return true; | |
} | |
void CArrayType::initializeMemory(void) | |
{ | |
if ( this->m_p == NULL ) | |
{ | |
return; | |
} | |
memset( (void*) this->m_p, 0, sizeof(double)); | |
} | |
void CArrayType::BubbleSort(void) | |
{ | |
if ( this->isNullPointer() ) | |
{ | |
return; | |
} | |
for (size_t i = 0; i < this->m_length; i ++) | |
{ | |
for (size_t j = 0; j < this->m_length; j ++) | |
{ | |
if ( this->m_p[i] < this->m_p[j] ) | |
{ | |
double a = this->m_p[i]; | |
this->m_p[i] = this->m_p[j]; | |
this->m_p[j] = a; | |
} | |
} | |
} | |
} | |
double CArrayType::getMinimum(void) | |
{ | |
if ( this->isNullPointer() ) | |
{ | |
return (-1); | |
} | |
this->BubbleSort(); | |
return this->m_p[0]; | |
} | |
double CArrayType::getMaximum(void) | |
{ | |
if ( this->isNullPointer() ) | |
{ | |
return (-1); | |
} | |
this->BubbleSort(); | |
return this->m_p[this->m_length - 1]; | |
} | |
// | |
CTemperature::CTemperature(size_t max_months) | |
{ | |
this->m_temperature.m_p = new double[max_months]; | |
this->m_temperature.m_length = max_months; | |
this->m_temperature.initializeMemory(); | |
this->m_average = 0; | |
this->m_stdev = 0; | |
this->m_minimum = 0; | |
this->m_maxmum = 0; | |
} | |
void CTemperature::GenerateResult(void) | |
{ | |
this->Average(); | |
this->StandardDeviation(); | |
this->m_minimum = this->m_temperature.getMinimum(); | |
this->m_maxmum = this->m_temperature.getMaximum(); | |
} | |
void CTemperature::Print(void) | |
{ | |
cout<<"Average = "<<this->m_average<<endl; | |
cout<<"Standard Deviation = "<<this->m_stdev<<endl; | |
cout<<"Minimum = "<<this->m_minimum<<endl; | |
cout<<"Maximum = "<<this->m_maxmum<<endl; | |
} | |
void CTemperature::Average(void) | |
{ | |
this->m_average = 0; | |
for (size_t i = 0; i < this->m_temperature.m_length; i ++) | |
{ | |
this->m_average += this->m_temperature.m_p[i]; | |
} | |
this->m_average /= this->m_temperature.m_length; | |
} | |
void CTemperature::StandardDeviation(void) | |
{ | |
this->Average(); | |
for (size_t i = 0; i < this->m_temperature.m_length; i ++) | |
{ | |
double a = this->m_average - this->m_temperature.m_p[i]; | |
a *= a; | |
this->m_stdev += a; | |
} | |
this->m_stdev /= this->m_temperature.m_length; | |
this->m_stdev = sqrt(this->m_stdev); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment