This is a sample of what the output should be:
City Low Temperature High Temperature
------------------------------------------------------
Port Charles 3 99
Springfield -19 102
Llanview 12 108
Salem 46 114
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
struct cityInfo
{
char cityName[25];
int lowTemp;
int highTemp;
};
int const MAXCHAR = 30;
int buildArray( cityInfo [] );
void printArray ( cityInfo [], int );
void sortArray ( cityInfo [], int );
void calcStats ( cityInfo [], int, double&, double&, double&, double& );
//Begin Main Function
int main ()
{
int numCities = 0;
double averageLow;
double averageHigh;
double stdDevLow;
double stdDevHigh;
cityInfo cityArray[ MAXCHAR ];
int n = buildArray( cityArray );
cout << "Unsorted City Reports: " << endl;
printArray( cityArray, n );
sortArray( cityArray, n );
cout << "Sorted City Reports:" << endl;
printArray( cityArray, n );
calcStats( cityArray, numCities, averageLow, averageHigh, stdDevLow, stdDevHigh );
cout << endl << "Temperature Statistics: " << endl;
cout << "---------------------------" << endl;
cout << "Average Temperature - Low: " << setw(15) << averageLow << endl;
cout << "Average Temperature - High: " << setw(15) << averageHigh << endl;
cout << endl << "Standard Deviation - Low Temperatures: " << setw(15) << stdDevLow << endl;
cout << "Standard Deviation - High Temperatures: " << setw(15) << stdDevHigh << endl;
cout << endl;
return 0;
}
//The functions to be called
int buildArray( cityInfo cityArray[] )
{
ifstream inFile;
char cityName[25];
int highTemp;
int lowTemp;
int numCities = 0;
int i;
inFile.open( "binary_cities.txt", ios::binary );
if ( inFile.fail() )
{
cout << "The binary_cities.txt input file did not open";
}
cityInfo city;
inFile.read( ( char * ) &city, sizeof ( cityInfo ) );
while ( inFile )
{
cityArray [ i ] = city;
i++;
inFile.read ( ( char* ) &city , sizeof ( cityInfo ) );
}
inFile.close();
return i;
}
void printArray( cityInfo cityArray[], int numCities )
{
cout << "City\t\t\tLow Temperature\tHigh Temperature" << endl;
cout << "---------------------------------------" << endl;
for( int i = 0; i < numCities; i++ )
{
cout << left << setw( 25 ) << cityArray[ i ].cityName << right << setw( 15 ) << cityArray[ i ].lowTemp << setw( 10 ) << cityArray[ i ].highTemp << endl;
}
cout << "---------------------------------------" << endl;
}
void sortArray ( cityInfo cityArray[], int numCities )
{
cityInfo temperature;
for( int i = 0; i < numCities - 1; i++ )
{
for( int n = i + 1; n < numCities; n++ )
{
char city1 = cityArray[i].cityName[0];
char city2 = cityArray[n].cityName[0];
if( city1 > city2 )
{
temperature = cityArray[i];
cityArray[i] = cityArray[n];
cityArray[n] = temperature;
}
}
}
}
void calcStats ( cityInfo cityArray[], int numCities, double &averageLow, double &averageHigh, double &stdDevLow, double &stdDevHigh )
{
int lowSum = 0;
int highSum = 0;
int lowSquared = 0;
int highSquared = 0;
for( int i = 0; i < numCities; i++ )
{
lowSum += cityArray[i].lowTemp;
highSum += cityArray[i].highTemp;
lowSquared += lowSum * lowSum;
highSquared += highSum * highSum;
averageLow = lowSum / numCities;
averageHigh = highSum / numCities;
stdDevLow = sqrt( lowSquared - ( ( lowSum *lowSum )/ numCities ) / ( numCities - 1 ) );
stdDevHigh = sqrt( highSquared - ( ( highSum * highSum )/ numCities ) / ( numCities - 1 ) );
}
averageLow = lowSum / numCities;
averageHigh = highSum / numCities;
stdDevLow = sqrt( lowSquared - ( ( lowSum *lowSum ) / numCities ) / ( numCities - 1 ) );
stdDevHigh = sqrt( highSquared - ( ( highSum * highSum ) / numCities) / ( numCities - 1 ) );
}
sorry it wouldn't attach in first post
here is the binary file.
Any help would be really appreciated!
Attached File(s)
-
binary_cities.txt (576bytes)
Number of downloads: 11

New Topic/Question
Reply



MultiQuote





|