I need help debugging my sorting algorithm program. /* / Jose Luis Patino / Algo
ID: 3819977 • Letter: I
Question
I need help debugging my sorting algorithm program.
/*
/ Jose Luis Patino
/ Algorithms Q2 Project
/ V3 - Vectors
/
/ debugging
/ linking rest of data
*/
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
class Data
{
friend class DataSort;
public:
Data(string file);
Data(Data d1, Data d2);
void printData();
private:
vector<int> id;
vector<int> amount;
vector<string> fName;
vector<string> lName;
};
class DataSort
{
public:
DataSort(Data d1, Data d2);
void printData();
void sortData();
void partitionSort(int p);
void swap(int num1, int num2);
private:
vector<int> id;
vector<int> amount;
vector<string> fName;
vector<string> lName;
};
int main()
{
Data BranchA("File1.txt"), BranchB("File2.txt");
BranchA.printData();
cout << ' ';
BranchB.printData();
//debug
cout << " BRANCH AB DATA: " << endl;
DataSort BranchAB(BranchA, BranchB);
BranchAB.printData();
BranchAB.sortData();
cout << " Sorted Data only id: " << endl;
BranchAB.printData();
}
Data::Data(string file)
{
int index = 0;
ifstream input;
input.open(file.c_str());
do
{
int temp;
input >> temp;
id.push_back(temp);
string temp1;
input >> temp1;
fName.push_back(temp1);
string temp2;
input >> temp2;
lName.push_back(temp2);
int temp3;
input >> temp3;
amount.push_back(temp3);
/*
cout << "DEBUG: LOOP " << index << " Vector Values: " << endl;
cout << id[index] << " " << fName[index] << " "
<< lName[index] << " " << amount[index] << endl;
*/
index++;
}
while(!input.eof());
}
//will store the sorted records
DataSort::DataSort(Data d1, Data d2)
{
for(int index = 0; index < d1.id.size(); index++)
{
id.push_back(d1.id[index]);
fName.push_back(d1.fName[index]);
lName.push_back(d1.lName[index]);
amount.push_back(d1.amount[index]);
}
for(int index = 0; index < d2.id.size(); index++)
{
id.push_back(d2.id[index]);
fName.push_back(d2.fName[index]);
lName.push_back(d2.lName[index]);
amount.push_back(d2.amount[index]);
}
}
void Data::printData()
{
for(int index = 0; index < id.size(); index++)
{
cout << id[index] << " ";
cout << fName[index] << " ";
cout << lName[index] << " ";
cout << amount[index] << endl;
}
}
void DataSort::printData()
{
for(int index = 0; index < id.size(); index++)
{
cout << id[index] << " ";
cout << fName[index] << " ";
cout << lName[index] << " ";
cout << amount[index] << endl;
}
}
void DataSort::sortData()
{
int i = 0;
int pivot = id[i];
int h = i;
for(int index = 0; index < id.size(); index++)
{
if(pivot > id[index])
{
h += 1;
swap(h, index);
swap(i, h);
i++;
}
}
partitionSort(i);
}
void DataSort::partitionSort(int p)
{
int i = 0;
int h = i;
int pivot1 = id[i];
for(int index = 0; index < p; index++)
{
if(pivot1 > id[index])
{
h += 1;
swap(h, index);
swap(i, h);
i++;
}
}
int j = (p+1);
int k = j;
int pivot2 = id[j];
for(int index = 0; index < id.size(); index++)
{
if(pivot2 > id[index])
{
k += 1;
swap(j, index);
swap(k, j);
j++;
}
}
}
void DataSort::swap(int num1, int num2)
{
int temp = id[num1];
id[num1] = id[num2];
id[num2] = temp;
}
Explanation / Answer
The Code is correct !
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
class Data
{
friend class DataSort;
public:
Data(string file);
Data(Data d1, Data d2);
void printData();
private:
vector<int> id;
vector<int> amount;
vector<string> fName;
vector<string> lName;
};
class DataSort
{
public:
DataSort(Data d1, Data d2);
void printData();
void sortData();
void partitionSort(int p);
void swap(int num1, int num2);
private:
vector<int> id;
vector<int> amount;
vector<string> fName;
vector<string> lName;
};
int main()
{
Data BranchA("File1.txt"), BranchB("File2.txt");
BranchA.printData();
cout << ' ';
BranchB.printData();
cout << " BRANCH AB DATA: " << endl;
DataSort BranchAB(BranchA, BranchB);
BranchAB.printData();
BranchAB.sortData();
cout << " Sorted Data only id: " << endl;
BranchAB.printData();
}
Data::Data(string file)
{
int index = 0;
ifstream input;
input.open(file.c_str());
do
{
int temp;
input >> temp;
id.push_back(temp);
string temp1;
input >> temp1;
fName.push_back(temp1);
string temp2;
input >> temp2;
lName.push_back(temp2);
int temp3;
input >> temp3;
amount.push_back(temp3);
index++;
}
while(!input.eof());
}
DataSort::DataSort(Data d1, Data d2)
{
for(int index = 0; index < d1.id.size(); index++)
{
id.push_back(d1.id[index]);
fName.push_back(d1.fName[index]);
lName.push_back(d1.lName[index]);
amount.push_back(d1.amount[index]);
}
for(int index = 0; index < d2.id.size(); index++)
{
id.push_back(d2.id[index]);
fName.push_back(d2.fName[index]);
lName.push_back(d2.lName[index]);
amount.push_back(d2.amount[index]);
}
}
void Data::printData()
{
for(int index = 0; index < id.size(); index++)
{
cout << id[index] << " ";
cout << fName[index] << " ";
cout << lName[index] << " ";
cout << amount[index] << endl;
}
}
void DataSort::printData()
{
for(int index = 0; index < id.size(); index++)
{
cout << id[index] << " ";
cout << fName[index] << " ";
cout << lName[index] << " ";
cout << amount[index] << endl;
}
}
void DataSort::sortData()
{
int i = 0;
int pivot = id[i];
int h = i;
for(int index = 0; index < id.size(); index++)
{
if(pivot > id[index])
{
h += 1;
swap(h, index);
swap(i, h);
i++;
}
}
partitionSort(i);
}
void DataSort::partitionSort(int p)
{
int i = 0;
int h = i;
int pivot1 = id[i];
for(int index = 0; index < p; index++)
{
if(pivot1 > id[index])
{
h += 1;
swap(h, index);
swap(i, h);
i++;
}
}
int j = (p+1);
int k = j;
int pivot2 = id[j];
for(int index = 0; index < id.size(); index++)
{
if(pivot2 > id[index])
{
k += 1;
swap(j, index);
swap(k, j);
j++;
}
}
}
void DataSort::swap(int num1, int num2)
{
int temp = id[num1];
id[num1] = id[num2];
id[num2] = temp;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.