|
|
VerificationAlgs
P3Verify.cpp
/*
Verification for Problem 3 of HW6, CSE310 Fall 2003
Expected as input a file with (x, y) integer coordinates
calculates MST
*/
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
struct City
{
float x, y;
};
int main(int argc, char **argv) {
int numCities;
City* myCities;
int numEdges, To, From;
float Total = 0, Cost;
int ActualNumEdges = 0;
if(argc != 3) {
cout << "Usage: V3 <datafile> <outputfile>\n" << endl;
return -1;
}
ifstream data, output;
data.open(argv[1]);
output.open(argv[2]);
if(data.fail() || output.fail())
{
cout << "Failed to open one or both of the files " << endl;
return -1;
}
//read in datafile
//FORMAT: Line 1 = number of pairs
//Each line after: x y coordinates
data >> numCities;
myCities = new City[numCities];
for(int i = 0; i < numCities; i++)
{
data >> myCities[i].x;
data >> myCities[i].y;
}
data.close();
/*
okay reading works
cout << numCities << endl;
for(int i = 0; i < numCities; i++)
cout << myCities[i].x << " " << myCities[i].y << endl;
*/
//Read in outputfile
output >> Cost;
output >> numEdges;
for(int i = 0; i < numEdges; i++)
{
output >> From;
output >> To;
From--;
To--;
ActualNumEdges++;
Total = Total + sqrt( (float) (myCities[From].x - myCities[To].x)*(myCities[From].x - myCities[To].x) +
(myCities[From].y - myCities[To].y)*(myCities[From].y - myCities[To].y) );
}
From = 0;
while(!output.eof())
{
output >> From;
output >> To;
if(From > 0)
ActualNumEdges++;
}
output.close();
cout << "Results: " << endl;
cout << "==================================" << endl;
cout << "\tThey Claim \tCalculated \tShould Be" << endl;
cout << "Cost:\t" << Cost << "\t\t" << Total << "\t\tN/A" << endl;
cout << "Edges:\t" << numEdges << "\t\t" << ActualNumEdges << "\t\t" << numCities -1 << endl << endl << endl;
return 1;
}
|