My code is not reading my data file well. The code is supposed to read fractions from decending order, but it does not work half way through.
please help!
#include <iostream>
#include <fstream>
using namespace std;
void read_data(int nums[],int den[],int size);
void clean(int Cnum[],int nums[],int den[],int Cden[],int size);
void low(int Cnum[],int Cden[],int size);
void sort(int Cnum[],int Cden[], int size);
void report(int Cnum[],int Cden[],int nums[],int den[],int size);
int main()
{
const int A_SIZE = 12;
int num[A_SIZE];
int den[A_SIZE];
int Cnum[A_SIZE];
int Cden[A_SIZE];
read_data(num,den,A_SIZE);
report(Cnum,Cden,num,den,A_SIZE);
clean(Cnum,num,den,Cden,A_SIZE);
low(Cnum,Cden,A_SIZE);
cout<<endl<<endl;
cout<< " The sorted values, in decending order:" << endl;
sort(Cnum,Cden,A_SIZE);
return 0;
}
void read_data(int nums[],int den[],int size)
{
ifstream dataIn;
dataIn.open("data.txt");
if(dataIn.fail())
{
cout << "File does not exist." << endl;
exit(1);
}
int count;
for (count=0; count<size; count++)
{
dataIn >>nums[count];
}
for (count=0; count <size; count++)
{
dataIn >>den[count];
}
dataIn.close();
}
void clean(int Cnum[],int nums[],int den[],int Cden[],int size)
{
cout << endl << endl;
cout << " The good fractions are:" << endl;
int j = 0;
for (int index = 0; index < size; index++)
{
if (den[index] != 0)
{
Cnum[j] = nums[index];
Cden[j] = den[index];
cout << " Fractions :" << " " <<Cnum[j]<<"/"<<Cden[j]<<" = " <<static_cast<double> (Cnum[j])/Cden[j]<<endl;
j++;
}
}
}
void low(int Cnum[],int Cden[],int size)
{
int loc=0;
double lowest;
lowest = Cnum[0]/Cden[0];
for (int c=1; c < size; c++)
{
if(Cnum[c]/Cden[c] < lowest)
{
loc = c;
lowest = Cnum[c]/Cden[c];
}
}
cout << endl << endl;
cout << "The fraction with the lowest value is :"<<Cnum[loc]<<"/"<<Cden[loc]<< endl;
}
void sort(int Cnum[], int Cden[], int size)
{
int Ntemp,Dtemp;
bool swap;
do
{ swap=false;
for (int C=0; C < (size-1) ; C++)
{
if(Cnum[C]/Cden[C]<Cnum[C+1]/Cden[C+1])
{
Ntemp=Cnum[C];
Dtemp=Cden[C];
Cnum[C]=Cnum[C+1];
Cden[C]=Cden[C+1];
Cden[C+1]=Dtemp;
Cnum[C+1]=Ntemp;
swap=true;
}
/*if(Cden[C]<Cden[C+1])
{
Dtemp=Cden[C];
Cden[C]=Cden[C+1];
Cden[C+1]=Dtemp;
swap=true;
}*/
}
}while(swap);
for(int i=0;i<size;i++)
{
cout<<"Fraction"<<i<<" "<<Cnum[i]<<"/"<<Cden[i]<<"="<<static_cast<double>(Cnum[i])/Cden[i]<<endl;
}
}
void report(int Cnum[],int Cden[],int nums[],int den[],int size)
{
int i;
for(i=0;i<size;i++)
{
if(den[i] == 0)
{
cout << " Fraction " << i << " " << nums[i] << "/" << den[i] << " = " << "DNE" << endl;
}
else
{
cout << " Fraction " << i << " " << nums[i] << "/" << den[i] << " = " << static_cast<double> ( nums[i])/den[i]<< endl;
}
}
}