954,498 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Selectoin SOrt

Can someone help me to make my program sort according to the average gallons used per car I keep geting 30 - 40 error when i try to compile it. Also
my files do exist.

#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;

const int MAXCARS = 12;
        float avgallons = 0;
		int numel = 0;
        float totalmiles, totalgallons;

struct Car
{
int number, miles;
float gallons;
float averagegallons;
}Cars;

Car Cars[MAXCARS];


void getdata(int, int, float);
void processdata(int, float);
void sort(float);
void putdata(int, float);

ifstream HopeData;
ofstream MikeData;

void main()
{

HopeData.open("gdata.dat");
MikeData.open("pdata");

if(HopeData.fail())
        {
        cout << "\n\nFile not successfully opened\n\n";
       }
cout << "\n\nFile successfully opened\n\n";

MikeData << "\n\n              Car Report" << endl;
MikeData << "Number       Average Per Car" << endl;
cout << setiosflags(ios::showpoint);
                cout << setiosflags(ios::fixed);
                cout << setprecision(2);

getdata(Cars.number, Cars.miles, Cars.gallons);
putdata(Cars.number, Cars.averagegallons);	

MikeData << "\n\nAverage Gallons Used by All Cars is " << avgallons << endl;
}

void getdata(int number, int miles, float gallons)
{
        while(HopeData.peek() != EOF)
        {
HopeData >> Cars.number >> Cars.miles >> Cars.gallons;
HopeData.ignore(80,'\n');

processdata(Cars.miles, Cars.gallons);
        }
}

void processdata(int miles, float gallons)
{
Cars.averagegallons = Cars.miles / Cars.gallons;
totalmiles = totalmiles + Cars.miles;
totalgallons = totalgallons + Cars.gallons;
avgallons = totalmiles / totalgallons;
numels++;
sort(Cars.averagegallons);
}

void sort(float averagegallons, int numels)
{
int i,j,min,minidx,temp,moves=0;

for(i=0;i<numels;i++)
  {
min = Cars[i];
minidx = i;
 	for(j=i+1;j<numels;j++)
  	{
		if(Cars[j].averagegallons<Cars[i].averagegallons)
		{
		min = Cars[j];
		minidx=j;
		}
		if(min<Cars[i].averagegallons)
		{
       temp=Cars[i];
       Cars[i]=min;
       Cars[minidx]=temp;
	   	}
	}
}

}

void putdata(int number, float averagegallons)
{
        while(HopeData.peek() != EOF)
        {
MikeData << Cars[].number << "\t     " << Cars[].averagegallons << endl;
        }
}
hopeolicious
Light Poster
43 posts since Oct 2004
Reputation Points: 11
Solved Threads: 0
 

Only define Cars once.

struct Car
{
int number, miles;
float gallons;
float averagegallons;
}Cars;

Car Cars[MAXCARS];


Then figure out which way to use them.

getdata(Cars.number, Cars.miles, Cars.gallons);
putdata(Cars.number, Cars.averagegallons);
Dave Sinkula
long time no c
Team Colleague
5,058 posts since Apr 2004
Reputation Points: 2,780
Solved Threads: 314
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You