Skip to content

Instantly share code, notes, and snippets.

@johnhmj
Created December 31, 2009 14:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johnhmj/266757 to your computer and use it in GitHub Desktop.
Save johnhmj/266757 to your computer and use it in GitHub Desktop.
#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